From 8100dcef788f5f78fa6745f713f0ec00721328ea Mon Sep 17 00:00:00 2001 From: Joe Nathan Abellard Date: Mon, 15 Jul 2024 11:41:32 -0400 Subject: [PATCH] Update package prefix --- README.md | 8 ++++---- Sable.sln | 16 ++++++++-------- _docs/guide/existing-project-integration.md | 4 ++-- _docs/guide/multi-tenancy-setup.md | 4 ++-- _docs/guide/multiple-database-setup.md | 4 ++-- _docs/introduction/getting-started.md | 8 ++++---- docs/404.html | 4 ++-- docs/README.html | 6 +++--- .../{app.bdacbc00.js => app.7749c2c3.js} | 2 +- .../chunks/@localSearchIndexroot.62206a51.js | 1 - .../chunks/@localSearchIndexroot.b15700c6.js | 1 + ...361d669.js => VPLocalSearchBox.f83fd2dc.js} | 2 +- .../{theme.d7145c28.js => theme.6a9fdd37.js} | 2 +- ...xisting-project-integration.md.3810c307.js} | 8 ++++---- ...ng-project-integration.md.3810c307.lean.js} | 0 ...> guide_multi-tenancy-setup.md.ce8c0d82.js} | 12 ++++++------ ...de_multi-tenancy-setup.md.ce8c0d82.lean.js} | 2 +- ...ide_multiple-database-setup.md.e2e4ff14.js} | 8 ++++---- ...ultiple-database-setup.md.e2e4ff14.lean.js} | 0 ...ntroduction_getting-started.md.b6a14f95.js} | 12 ++++++------ ...uction_getting-started.md.b6a14f95.lean.js} | 2 +- docs/guide/existing-project-integration.html | 16 ++++++++-------- docs/guide/multi-tenancy-setup.html | 16 ++++++++-------- docs/guide/multiple-database-setup.html | 16 ++++++++-------- docs/hashmap.json | 2 +- docs/index.html | 6 +++--- docs/introduction/getting-started.html | 18 +++++++++--------- docs/introduction/why-sable.html | 6 +++--- docs/reference/cli.html | 6 +++--- docs/reference/how-sable-works.html | 6 +++--- .../Book.cs | 2 +- .../IOtherDocumentStore.cs | 2 +- .../Order.cs | 2 +- .../Sable.Samples.Core.csproj} | 2 +- .../Program.cs | 4 ++-- .../Properties/launchSettings.json | 0 .../Sable.Samples.GettingStarted.csproj} | 2 +- .../appsettings.Development.json | 0 .../appsettings.json | 0 .../sable/Marten/20240130030104_backfill.sql | 0 .../20240130030018_InfrastructureSetup.sql | 0 .../migrations/20240130030021_Initial.sql | 0 .../Marten/migrations/20240130030245_M1.sql | 0 .../Marten/migrations/20240130031301_M2.sql | 0 .../sable/Marten/schema.txt | 0 .../Marten/scripts/20240130031331_script.sql | 0 .../Program.cs | 4 ++-- .../Properties/launchSettings.json | 0 .../Sable.Samples.MultiTenancy.csproj} | 2 +- .../appsettings.Development.json | 0 .../appsettings.json | 0 .../20231013223111_InfrastructureSetup.sql | 0 .../migrations/20231013223114_Initial.sql | 0 .../sable/Marten/schema.txt | 0 .../Program.cs | 4 ++-- .../Properties/launchSettings.json | 0 .../Sable.Samples.MultipleDatabases.csproj} | 2 +- .../appsettings.Development.json | 0 .../appsettings.json | 0 .../20231018224532_backfill.sql | 0 .../20231018224343_InfrastructureSetup.sql | 0 .../migrations/20231018224348_Initial.sql | 0 .../migrations/20231018224546_RemoveIndex.sql | 0 .../migrations/20231018224612_Custom.sql | 0 .../sable/IOtherDocumentStore/schema.txt | 0 .../scripts/20231018224817_script.sql | 0 .../20231013224417_InfrastructureSetup.sql | 0 .../migrations/20231013224420_Initial.sql | 0 .../20231013224536_AddIndexOnName.sql | 0 .../sable/Marten/schema.txt | 0 .../AnsiConsoleLogger.cs | 2 +- .../Commands/AddMigrationCommand.cs | 8 ++++---- .../Commands/BackfillMigrationsCommand.cs | 6 +++--- .../Commands/CreateMigrationScriptCommand.cs | 6 +++--- .../InitializeInfrastructureCommand.cs | 8 ++++---- .../Commands/UpdateDatabaseCommand.cs | 6 +++--- .../Extensions/EnumerableExtensions.cs | 2 +- .../IConsoleLogger.cs | 2 +- .../IMartenMigrationManager.cs | 4 ++-- .../MartenMigrationManager.cs | 8 ++++---- .../Migration.cs | 2 +- .../Options/PostgresContainerOptions.cs | 2 +- .../Program.cs | 4 ++-- .../Properties/launchSettings.json | 0 .../ReadinessProbeWaitStrategy.cs | 2 +- .../Sable.Cli.csproj} | 2 +- .../SableCliConstants.cs | 2 +- .../Settings/ProjectSettings.cs | 2 +- .../Templates.cs | 2 +- .../TypeRegistrar.cs | 2 +- .../Utilities/FileSystemUtilities.cs | 2 +- .../Utilities/ValidationUtilities.cs | 2 +- .../containerOptions.upstream.json | 0 .../Extensions/ServiceCollectionExtensions.cs | 2 +- .../Sable.csproj} | 0 .../SableConstants.cs | 2 +- .../FileSystemUtilitiesTests.cs | 4 ++-- .../Sable.Cli.Tests.csproj} | 2 +- .../IOtherDatabase.cs | 2 +- .../Sable.Tests.csproj} | 2 +- .../ServiceRegistrationTests.cs | 4 ++-- 101 files changed, 159 insertions(+), 159 deletions(-) rename docs/assets/{app.bdacbc00.js => app.7749c2c3.js} (95%) delete mode 100644 docs/assets/chunks/@localSearchIndexroot.62206a51.js create mode 100644 docs/assets/chunks/@localSearchIndexroot.b15700c6.js rename docs/assets/chunks/{VPLocalSearchBox.4361d669.js => VPLocalSearchBox.f83fd2dc.js} (99%) rename docs/assets/chunks/{theme.d7145c28.js => theme.6a9fdd37.js} (99%) rename docs/assets/{guide_existing-project-integration.md.dfe1a60e.js => guide_existing-project-integration.md.3810c307.js} (92%) rename docs/assets/{guide_existing-project-integration.md.dfe1a60e.lean.js => guide_existing-project-integration.md.3810c307.lean.js} (100%) rename docs/assets/{guide_multi-tenancy-setup.md.48845541.js => guide_multi-tenancy-setup.md.ce8c0d82.js} (90%) rename docs/assets/{guide_multi-tenancy-setup.md.48845541.lean.js => guide_multi-tenancy-setup.md.ce8c0d82.lean.js} (73%) rename docs/assets/{guide_multiple-database-setup.md.d5602c5e.js => guide_multiple-database-setup.md.e2e4ff14.js} (94%) rename docs/assets/{guide_multiple-database-setup.md.d5602c5e.lean.js => guide_multiple-database-setup.md.e2e4ff14.lean.js} (100%) rename docs/assets/{introduction_getting-started.md.7f2c46f9.js => introduction_getting-started.md.b6a14f95.js} (77%) rename docs/assets/{introduction_getting-started.md.7f2c46f9.lean.js => introduction_getting-started.md.b6a14f95.lean.js} (58%) rename samples/{BloombergLP.Sable.Samples.Core => Sable.Samples.Core}/Book.cs (84%) rename samples/{BloombergLP.Sable.Samples.Core => Sable.Samples.Core}/IOtherDocumentStore.cs (80%) rename samples/{BloombergLP.Sable.Samples.Core => Sable.Samples.Core}/Order.cs (85%) rename samples/{BloombergLP.Sable.Samples.Core/BloombergLP.Sable.Samples.Core.csproj => Sable.Samples.Core/Sable.Samples.Core.csproj} (80%) rename samples/{BloombergLP.Sable.Samples.GettingStarted => Sable.Samples.GettingStarted}/Program.cs (91%) rename samples/{BloombergLP.Sable.Samples.GettingStarted => Sable.Samples.GettingStarted}/Properties/launchSettings.json (100%) rename samples/{BloombergLP.Sable.Samples.GettingStarted/BloombergLP.Sable.Samples.GettingStarted.csproj => Sable.Samples.GettingStarted/Sable.Samples.GettingStarted.csproj} (61%) rename samples/{BloombergLP.Sable.Samples.GettingStarted => Sable.Samples.GettingStarted}/appsettings.Development.json (100%) rename samples/{BloombergLP.Sable.Samples.GettingStarted => Sable.Samples.GettingStarted}/appsettings.json (100%) rename samples/{BloombergLP.Sable.Samples.GettingStarted => Sable.Samples.GettingStarted}/sable/Marten/20240130030104_backfill.sql (100%) rename samples/{BloombergLP.Sable.Samples.GettingStarted => Sable.Samples.GettingStarted}/sable/Marten/migrations/20240130030018_InfrastructureSetup.sql (100%) rename samples/{BloombergLP.Sable.Samples.GettingStarted => Sable.Samples.GettingStarted}/sable/Marten/migrations/20240130030021_Initial.sql (100%) rename samples/{BloombergLP.Sable.Samples.GettingStarted => Sable.Samples.GettingStarted}/sable/Marten/migrations/20240130030245_M1.sql (100%) rename samples/{BloombergLP.Sable.Samples.GettingStarted => Sable.Samples.GettingStarted}/sable/Marten/migrations/20240130031301_M2.sql (100%) rename samples/{BloombergLP.Sable.Samples.GettingStarted => Sable.Samples.GettingStarted}/sable/Marten/schema.txt (100%) rename samples/{BloombergLP.Sable.Samples.GettingStarted => Sable.Samples.GettingStarted}/sable/Marten/scripts/20240130031331_script.sql (100%) rename samples/{BloombergLP.Sable.Samples.MultiTenancy => Sable.Samples.MultiTenancy}/Program.cs (92%) rename samples/{BloombergLP.Sable.Samples.MultiTenancy => Sable.Samples.MultiTenancy}/Properties/launchSettings.json (100%) rename samples/{BloombergLP.Sable.Samples.MultiTenancy/BloombergLP.Sable.Samples.MultiTenancy.csproj => Sable.Samples.MultiTenancy/Sable.Samples.MultiTenancy.csproj} (61%) rename samples/{BloombergLP.Sable.Samples.MultiTenancy => Sable.Samples.MultiTenancy}/appsettings.Development.json (100%) rename samples/{BloombergLP.Sable.Samples.MultiTenancy => Sable.Samples.MultiTenancy}/appsettings.json (100%) rename samples/{BloombergLP.Sable.Samples.MultiTenancy => Sable.Samples.MultiTenancy}/sable/Marten/migrations/20231013223111_InfrastructureSetup.sql (100%) rename samples/{BloombergLP.Sable.Samples.MultiTenancy => Sable.Samples.MultiTenancy}/sable/Marten/migrations/20231013223114_Initial.sql (100%) rename samples/{BloombergLP.Sable.Samples.MultiTenancy => Sable.Samples.MultiTenancy}/sable/Marten/schema.txt (100%) rename samples/{BloombergLP.Sable.Samples.MultipleDatabases => Sable.Samples.MultipleDatabases}/Program.cs (95%) rename samples/{BloombergLP.Sable.Samples.MultipleDatabases => Sable.Samples.MultipleDatabases}/Properties/launchSettings.json (100%) rename samples/{BloombergLP.Sable.Samples.MultipleDatabases/BloombergLP.Sable.Samples.MultipleDatabases.csproj => Sable.Samples.MultipleDatabases/Sable.Samples.MultipleDatabases.csproj} (61%) rename samples/{BloombergLP.Sable.Samples.MultipleDatabases => Sable.Samples.MultipleDatabases}/appsettings.Development.json (100%) rename samples/{BloombergLP.Sable.Samples.MultipleDatabases => Sable.Samples.MultipleDatabases}/appsettings.json (100%) rename samples/{BloombergLP.Sable.Samples.MultipleDatabases => Sable.Samples.MultipleDatabases}/sable/IOtherDocumentStore/20231018224532_backfill.sql (100%) rename samples/{BloombergLP.Sable.Samples.MultipleDatabases => Sable.Samples.MultipleDatabases}/sable/IOtherDocumentStore/migrations/20231018224343_InfrastructureSetup.sql (100%) rename samples/{BloombergLP.Sable.Samples.MultipleDatabases => Sable.Samples.MultipleDatabases}/sable/IOtherDocumentStore/migrations/20231018224348_Initial.sql (100%) rename samples/{BloombergLP.Sable.Samples.MultipleDatabases => Sable.Samples.MultipleDatabases}/sable/IOtherDocumentStore/migrations/20231018224546_RemoveIndex.sql (100%) rename samples/{BloombergLP.Sable.Samples.MultipleDatabases => Sable.Samples.MultipleDatabases}/sable/IOtherDocumentStore/migrations/20231018224612_Custom.sql (100%) rename samples/{BloombergLP.Sable.Samples.MultipleDatabases => Sable.Samples.MultipleDatabases}/sable/IOtherDocumentStore/schema.txt (100%) rename samples/{BloombergLP.Sable.Samples.MultipleDatabases => Sable.Samples.MultipleDatabases}/sable/IOtherDocumentStore/scripts/20231018224817_script.sql (100%) rename samples/{BloombergLP.Sable.Samples.MultipleDatabases => Sable.Samples.MultipleDatabases}/sable/Marten/migrations/20231013224417_InfrastructureSetup.sql (100%) rename samples/{BloombergLP.Sable.Samples.MultipleDatabases => Sable.Samples.MultipleDatabases}/sable/Marten/migrations/20231013224420_Initial.sql (100%) rename samples/{BloombergLP.Sable.Samples.MultipleDatabases => Sable.Samples.MultipleDatabases}/sable/Marten/migrations/20231013224536_AddIndexOnName.sql (100%) rename samples/{BloombergLP.Sable.Samples.MultipleDatabases => Sable.Samples.MultipleDatabases}/sable/Marten/schema.txt (100%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/AnsiConsoleLogger.cs (95%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/Commands/AddMigrationCommand.cs (97%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/Commands/BackfillMigrationsCommand.cs (95%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/Commands/CreateMigrationScriptCommand.cs (96%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/Commands/InitializeInfrastructureCommand.cs (94%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/Commands/UpdateDatabaseCommand.cs (94%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/Extensions/EnumerableExtensions.cs (93%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/IConsoleLogger.cs (85%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/IMartenMigrationManager.cs (91%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/MartenMigrationManager.cs (98%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/Migration.cs (99%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/Options/PostgresContainerOptions.cs (95%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/Program.cs (96%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/Properties/launchSettings.json (100%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/ReadinessProbeWaitStrategy.cs (96%) rename src/{BloombergLP.Sable.Cli/BloombergLP.Sable.Cli.csproj => Sable.Cli/Sable.Cli.csproj} (92%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/SableCliConstants.cs (95%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/Settings/ProjectSettings.cs (97%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/Templates.cs (98%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/TypeRegistrar.cs (98%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/Utilities/FileSystemUtilities.cs (95%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/Utilities/ValidationUtilities.cs (94%) rename src/{BloombergLP.Sable.Cli => Sable.Cli}/containerOptions.upstream.json (100%) rename src/{BloombergLP.Sable => Sable}/Extensions/ServiceCollectionExtensions.cs (99%) rename src/{BloombergLP.Sable/BloombergLP.Sable.csproj => Sable/Sable.csproj} (100%) rename src/{BloombergLP.Sable => Sable}/SableConstants.cs (88%) rename tests/{BloombergLP.Sable.Cli.Tests => Sable.Cli.Tests}/FileSystemUtilitiesTests.cs (93%) rename tests/{BloombergLP.Sable.Tests/BloombergLP.Sable.Tests.csproj => Sable.Cli.Tests/Sable.Cli.Tests.csproj} (70%) rename tests/{BloombergLP.Sable.Tests => Sable.Tests}/IOtherDatabase.cs (82%) rename tests/{BloombergLP.Sable.Cli.Tests/BloombergLP.Sable.Cli.Tests.csproj => Sable.Tests/Sable.Tests.csproj} (68%) rename tests/{BloombergLP.Sable.Tests => Sable.Tests}/ServiceRegistrationTests.cs (98%) diff --git a/README.md b/README.md index d45146b..bfbfa00 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Before starting, ensure the following prerequisites are met: - The **Sable** .NET tool is installed by running the following command: ```bash -dotnet tool install -g BloombergLP.Sable.Cli +dotnet tool install -g Sable.Cli ``` See [.NET tools](https://learn.microsoft.com/en-us/dotnet/core/tools/global-tools) to learn more about how .NET tools work. @@ -48,7 +48,7 @@ dotnet new webapi - Configure Marten along with its command line tooling support. - Add **Sable** integration support to the project: ```bash -dotnet add package BloombergLP.Sable +dotnet add package Sable ``` Now for the fun part. Replace whatever overload of `AddMarten` you're using with `AddMartenWithSableSupport`. That's all it takes to complete the integration. @@ -57,8 +57,8 @@ At this point, you should have a configuration that looks something like this: ```c# using Marten; using Oakton; -using BloombergLP.Sable.Extensions; -using BloombergLP.Sable.Samples.Core; +using Sable.Extensions; +using Sable.Samples.Core; using Weasel.Core; var builder = WebApplication.CreateBuilder(args); diff --git a/Sable.sln b/Sable.sln index 6d4dbba..f9785af 100644 --- a/Sable.sln +++ b/Sable.sln @@ -48,7 +48,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{0555 .github\release-drafter.yml = .github\release-drafter.yml EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BloombergLP.Sable", "src\BloombergLP.Sable\BloombergLP.Sable.csproj", "{FF1F5A44-8B89-4316-AD77-E1C56CF0655E}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sable", "src\Sable\Sable.csproj", "{FF1F5A44-8B89-4316-AD77-E1C56CF0655E}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{EFE1E5ED-D337-4874-82EC-D9FA0BC7D3AB}" ProjectSection(SolutionItems) = preProject @@ -61,21 +61,21 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{ .github\workflows\release-drafter.yml = .github\workflows\release-drafter.yml EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BloombergLP.Sable.Cli", "src\BloombergLP.Sable.Cli\BloombergLP.Sable.Cli.csproj", "{5AFD0604-B5BD-4E96-98E1-9ADC13069BCC}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sable.Cli", "src\Sable.Cli\Sable.Cli.csproj", "{5AFD0604-B5BD-4E96-98E1-9ADC13069BCC}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{5934E500-E691-4C28-A8A5-119E9786F2AE}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BloombergLP.Sable.Samples.Core", "samples\BloombergLP.Sable.Samples.Core\BloombergLP.Sable.Samples.Core.csproj", "{0E11EECD-333F-4FB5-A9C1-D4D71223C96D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sable.Samples.Core", "samples\Sable.Samples.Core\Sable.Samples.Core.csproj", "{0E11EECD-333F-4FB5-A9C1-D4D71223C96D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BloombergLP.Sable.Samples.GettingStarted", "samples\BloombergLP.Sable.Samples.GettingStarted\BloombergLP.Sable.Samples.GettingStarted.csproj", "{35170F5E-7773-4C94-A297-D0DC4E92A9CA}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sable.Samples.GettingStarted", "samples\Sable.Samples.GettingStarted\Sable.Samples.GettingStarted.csproj", "{35170F5E-7773-4C94-A297-D0DC4E92A9CA}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BloombergLP.Sable.Samples.MultipleDatabases", "samples\BloombergLP.Sable.Samples.MultipleDatabases\BloombergLP.Sable.Samples.MultipleDatabases.csproj", "{0741B165-9DFA-49EB-B91C-7DECD6584B7A}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sable.Samples.MultipleDatabases", "samples\Sable.Samples.MultipleDatabases\Sable.Samples.MultipleDatabases.csproj", "{0741B165-9DFA-49EB-B91C-7DECD6584B7A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BloombergLP.Sable.Samples.MultiTenancy", "samples\BloombergLP.Sable.Samples.MultiTenancy\BloombergLP.Sable.Samples.MultiTenancy.csproj", "{1DB49A91-FA54-4534-9B63-312DC30F98B7}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sable.Samples.MultiTenancy", "samples\Sable.Samples.MultiTenancy\Sable.Samples.MultiTenancy.csproj", "{1DB49A91-FA54-4534-9B63-312DC30F98B7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BloombergLP.Sable.Cli.Tests", "tests\BloombergLP.Sable.Cli.Tests\BloombergLP.Sable.Cli.Tests.csproj", "{03FA826C-6DF3-465F-A1BE-83BA55156F74}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sable.Cli.Tests", "tests\Sable.Cli.Tests\Sable.Cli.Tests.csproj", "{03FA826C-6DF3-465F-A1BE-83BA55156F74}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BloombergLP.Sable.Tests", "tests\BloombergLP.Sable.Tests\BloombergLP.Sable.Tests.csproj", "{65E71BD0-E5CD-42A2-959D-B5D74A655AF8}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sable.Tests", "tests\Sable.Tests\Sable.Tests.csproj", "{65E71BD0-E5CD-42A2-959D-B5D74A655AF8}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/_docs/guide/existing-project-integration.md b/_docs/guide/existing-project-integration.md index cad41b2..ae8b39b 100644 --- a/_docs/guide/existing-project-integration.md +++ b/_docs/guide/existing-project-integration.md @@ -15,8 +15,8 @@ Once those prerequisites are met, you're all set to go. ```c# using Marten; using Oakton; -using BloombergLP.Sable.Extensions; -using BloombergLP.Sable.Samples.Core; +using Sable.Extensions; +using Sable.Samples.Core; using Weasel.Core; var builder = WebApplication.CreateBuilder(args); diff --git a/_docs/guide/multi-tenancy-setup.md b/_docs/guide/multi-tenancy-setup.md index 63d342c..c391968 100644 --- a/_docs/guide/multi-tenancy-setup.md +++ b/_docs/guide/multi-tenancy-setup.md @@ -7,8 +7,8 @@ still applies for any single database setup with multi-tenancy configured. As su ```c# using Marten; using Oakton; -using BloombergLP.Sable.Extensions; -using BloombergLP.Sable.Samples.Core; +using Sable.Extensions; +using Sable.Samples.Core; using Weasel.Core; var builder = WebApplication.CreateBuilder(args); diff --git a/_docs/guide/multiple-database-setup.md b/_docs/guide/multiple-database-setup.md index cde0b8c..1cb3e07 100644 --- a/_docs/guide/multiple-database-setup.md +++ b/_docs/guide/multiple-database-setup.md @@ -5,8 +5,8 @@ It's pretty simple. Sable will just maintain migrations in separate directories ```c# using Marten; using Oakton; -using BloombergLP.Sable.Extensions; -using BloombergLP.Sable.Samples.Core; +using Sable.Extensions; +using Sable.Samples.Core; using Weasel.Core; var builder = WebApplication.CreateBuilder(args); diff --git a/_docs/introduction/getting-started.md b/_docs/introduction/getting-started.md index 054e752..e7fc527 100644 --- a/_docs/introduction/getting-started.md +++ b/_docs/introduction/getting-started.md @@ -7,7 +7,7 @@ Before starting, ensure the following prerequisites are met: - The **Sable** dotnet tool is installed by running the following command: ```bash -dotnet tool install -g BloombergLP.Sable.Cli +dotnet tool install -g Sable.Cli ``` See [.NET Tools](https://learn.microsoft.com/en-us/dotnet/core/tools/global-tools) to learn more about how .NET tools work. @@ -28,7 +28,7 @@ dotnet new webapi - Configure marten along with its command line tooling support. - Add **Sable** integration support to the project: ```bash -dotnet add package BloombergLP.Sable +dotnet add package Sable ``` Now the fun part. Replace whatever overload of `AddMarten` you're using with `AddMartenWithSableSupport`. That's all there is to it for the integration. @@ -37,8 +37,8 @@ At this point, you should have a configuration that looks something like this: ```c# using Marten; using Oakton; -using BloombergLP.Sable.Extensions; -using BloombergLP.Sable.Samples.Core; +using Sable.Extensions; +using Sable.Samples.Core; using Weasel.Core; var builder = WebApplication.CreateBuilder(args); diff --git a/docs/404.html b/docs/404.html index 08a05e3..80859bc 100644 --- a/docs/404.html +++ b/docs/404.html @@ -7,14 +7,14 @@ - +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
- + \ No newline at end of file diff --git a/docs/README.html b/docs/README.html index b3ef4b1..5780e96 100644 --- a/docs/README.html +++ b/docs/README.html @@ -7,17 +7,17 @@ - + - +
Skip to content
- + \ No newline at end of file diff --git a/docs/assets/app.bdacbc00.js b/docs/assets/app.7749c2c3.js similarity index 95% rename from docs/assets/app.bdacbc00.js rename to docs/assets/app.7749c2c3.js index b078f00..3e7668e 100644 --- a/docs/assets/app.bdacbc00.js +++ b/docs/assets/app.7749c2c3.js @@ -1 +1 @@ -import{s,a1 as i,a2 as u,a3 as c,a4 as l,a5 as d,a6 as f,a7 as m,a8 as h,a9 as A,aa as g,V as P,d as v,u as y,j as C,y as w,ab as _,ac as b,ad as E,ae as R}from"./chunks/framework.b8722102.js";import{t as D}from"./chunks/theme.d7145c28.js";function p(e){if(e.extends){const a=p(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const o=p(D),j=v({name:"VitePressApp",setup(){const{site:e}=y();return C(()=>{w(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),_(),b(),E(),o.setup&&o.setup(),()=>R(o.Layout)}});async function O(){const e=T(),a=S();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",d),a.component("ClientOnly",f),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),o.enhanceApp&&await o.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function S(){return h(j)}function T(){let e=s,a;return A(t=>{let n=g(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=P(()=>import(n),[])),s&&(e=!1),r},o.NotFound)}s&&O().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{O as createApp}; +import{s,a1 as i,a2 as u,a3 as c,a4 as l,a5 as d,a6 as f,a7 as m,a8 as h,a9 as A,aa as g,V as P,d as v,u as y,j as C,y as w,ab as _,ac as b,ad as E,ae as R}from"./chunks/framework.b8722102.js";import{t as D}from"./chunks/theme.6a9fdd37.js";function p(e){if(e.extends){const a=p(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const o=p(D),j=v({name:"VitePressApp",setup(){const{site:e}=y();return C(()=>{w(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),_(),b(),E(),o.setup&&o.setup(),()=>R(o.Layout)}});async function O(){const e=T(),a=S();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",d),a.component("ClientOnly",f),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),o.enhanceApp&&await o.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function S(){return h(j)}function T(){let e=s,a;return A(t=>{let n=g(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=P(()=>import(n),[])),s&&(e=!1),r},o.NotFound)}s&&O().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{O as createApp}; diff --git a/docs/assets/chunks/@localSearchIndexroot.62206a51.js b/docs/assets/chunks/@localSearchIndexroot.62206a51.js deleted file mode 100644 index 5ebdc4c..0000000 --- a/docs/assets/chunks/@localSearchIndexroot.62206a51.js +++ /dev/null @@ -1 +0,0 @@ -const e=`{"documentCount":36,"nextId":36,"documentIds":{"0":"/sable/README.html#documentation","1":"/sable/guide/existing-project-integration.html#existing-project-integration","2":"/sable/guide/existing-project-integration.html#prerequisites","3":"/sable/guide/existing-project-integration.html#application-configuration","4":"/sable/guide/existing-project-integration.html#initialize-migration-infrastructure","5":"/sable/guide/existing-project-integration.html#backfill-initial-migrations","6":"/sable/guide/multi-tenancy-setup.html#multi-tenancy-setup","7":"/sable/guide/multiple-database-setup.html#multiple-database-setup","8":"/sable/introduction/getting-started.html#getting-started","9":"/sable/introduction/getting-started.html#prerequisites","10":"/sable/introduction/getting-started.html#application-configuration","11":"/sable/introduction/getting-started.html#initialize-migration-infrastructure","12":"/sable/introduction/getting-started.html#update-database","13":"/sable/introduction/getting-started.html#add-migration","14":"/sable/introduction/getting-started.html#what-s-next","15":"/sable/introduction/why-sable.html#why-sable","16":"/sable/reference/cli.html#command-line-interface","17":"/sable/reference/cli.html#sable-init","18":"/sable/reference/cli.html#usage","19":"/sable/reference/cli.html#options","20":"/sable/reference/cli.html#sable-migrations-add","21":"/sable/reference/cli.html#usage-1","22":"/sable/reference/cli.html#options-1","23":"/sable/reference/cli.html#sable-migrations-script","24":"/sable/reference/cli.html#usage-2","25":"/sable/reference/cli.html#options-2","26":"/sable/reference/cli.html#sable-migrations-backfill","27":"/sable/reference/cli.html#usage-3","28":"/sable/reference/cli.html#options-3","29":"/sable/reference/cli.html#sable-database-update","30":"/sable/reference/cli.html#usage-4","31":"/sable/reference/cli.html#options-4","32":"/sable/reference/how-sable-works.html#how-sable-works","33":"/sable/reference/how-sable-works.html#overview","34":"/sable/reference/how-sable-works.html#custom-shadow-database","35":"/sable/reference/how-sable-works.html#migration-tracking-and-idempotency"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,1],"1":[3,1,25],"2":[1,3,66],"3":[2,3,64],"4":[3,3,55],"5":[3,3,111],"6":[3,1,151],"7":[3,1,142],"8":[2,1,1],"9":[1,2,41],"10":[2,2,156],"11":[3,2,56],"12":[2,2,51],"13":[2,2,52],"14":[4,2,36],"15":[3,1,188],"16":[3,1,1],"17":[2,3,8],"18":[1,5,5],"19":[1,5,56],"20":[3,3,7],"21":[1,6,10],"22":[1,6,136],"23":[3,3,19],"24":[1,6,6],"25":[1,6,53],"26":[3,3,24],"27":[1,6,6],"28":[1,6,38],"29":[3,3,10],"30":[1,6,10],"31":[1,6,43],"32":[3,1,1],"33":[1,3,130],"34":[3,3,95],"35":[4,3,119]},"averageFieldLength":[2.111111111111111,3.1666666666666665,54.80555555555555],"storedFields":{"0":{"title":"Documentation","titles":[]},"1":{"title":"Existing Project Integration","titles":[]},"2":{"title":"Prerequisites","titles":["Existing Project Integration"]},"3":{"title":"Application Configuration","titles":["Existing Project Integration"]},"4":{"title":"Initialize Migration Infrastructure","titles":["Existing Project Integration"]},"5":{"title":"Backfill Initial Migrations","titles":["Existing Project Integration"]},"6":{"title":"Multi-tenancy Setup","titles":[]},"7":{"title":"Multiple Database Setup","titles":[]},"8":{"title":"Getting Started","titles":[]},"9":{"title":"Prerequisites","titles":["Getting Started"]},"10":{"title":"Application Configuration","titles":["Getting Started"]},"11":{"title":"Initialize Migration Infrastructure","titles":["Getting Started"]},"12":{"title":"Update Database","titles":["Getting Started"]},"13":{"title":"Add Migration","titles":["Getting Started"]},"14":{"title":"What's Next?","titles":["Getting Started"]},"15":{"title":"Why Sable?","titles":[]},"16":{"title":"Command Line Interface","titles":[]},"17":{"title":"sable init","titles":["Command Line Interface"]},"18":{"title":"Usage","titles":["Command Line Interface","sable init"]},"19":{"title":"Options","titles":["Command Line Interface","sable init"]},"20":{"title":"sable migrations add","titles":["Command Line Interface"]},"21":{"title":"Usage","titles":["Command Line Interface","sable migrations add"]},"22":{"title":"Options","titles":["Command Line Interface","sable migrations add"]},"23":{"title":"sable migrations script","titles":["Command Line Interface"]},"24":{"title":"Usage","titles":["Command Line Interface","sable migrations script"]},"25":{"title":"Options","titles":["Command Line Interface","sable migrations script"]},"26":{"title":"sable migrations backfill","titles":["Command Line Interface"]},"27":{"title":"Usage","titles":["Command Line Interface","sable migrations backfill"]},"28":{"title":"Options","titles":["Command Line Interface","sable migrations backfill"]},"29":{"title":"sable database update","titles":["Command Line Interface"]},"30":{"title":"Usage","titles":["Command Line Interface","sable database update"]},"31":{"title":"Options","titles":["Command Line Interface","sable database update"]},"32":{"title":"How Sable Works","titles":[]},"33":{"title":"Overview","titles":["How Sable Works"]},"34":{"title":"Custom Shadow Database","titles":["How Sable Works"]},"35":{"title":"Migration Tracking and Idempotency","titles":["How Sable Works"]}},"dirtCount":0,"index":[["0",{"2":{"35":4}}],["39",{"2":{"35":40}}],["32",{"2":{"35":2}}],["$$",{"2":{"35":8}}],["48",{"2":{"35":2}}],["20231014233240",{"2":{"35":6}}],["20231013224735",{"2":{"35":6}}],["2023",{"2":{"35":2}}],["5432",{"2":{"34":4}}],["5470",{"2":{"34":2}}],["11",{"2":{"35":2}}],["14",{"2":{"35":2}}],["10",{"2":{"35":2}}],["1",{"2":{"34":2,"35":4}}],["15",{"2":{"34":2}}],["questions",{"2":{"15":1}}],["quot",{"2":{"3":16,"6":40,"7":72,"10":16,"34":64}}],["json",{"2":{"19":1,"22":1,"34":2}}],["job",{"2":{"15":1}}],["just",{"2":{"5":2,"6":1,"7":2,"13":3,"15":2,"33":2,"34":1}}],["know",{"2":{"14":1,"15":2,"22":2}}],["keep",{"2":{"5":1,"35":1}}],["utc",{"2":{"35":2}}],["uuid",{"2":{"35":2}}],["unless",{"2":{"22":2}}],["usage",{"0":{"18":1,"21":1,"24":1,"27":1,"30":1}}],["username=postgres",{"2":{"34":2}}],["user",{"2":{"34":2}}],["uses",{"2":{"34":1}}],["used",{"2":{"11":1,"15":1,"19":1,"22":1,"23":1,"33":2,"34":2}}],["use",{"2":{"7":1,"19":1,"22":5,"25":1,"28":1,"29":1,"31":1,"33":1,"34":3}}],["using",{"2":{"3":10,"6":10,"7":10,"10":11,"19":1,"22":1,"25":1,"28":1,"31":1,"33":2,"35":4}}],["update",{"0":{"12":1,"29":1},"1":{"30":1,"31":1},"2":{"12":3,"13":2,"30":2}}],["up",{"2":{"5":2,"23":1,"26":1,"29":1}}],["fact",{"2":{"33":1}}],["far",{"2":{"13":1}}],["f",{"2":{"25":1}}],["flag",{"2":{"22":2}}],["frame",{"2":{"15":1}}],["from",{"2":{"5":2,"15":1,"23":1,"25":1,"33":1,"34":4,"35":4}}],["furthermore",{"2":{"15":1}}],["functionality",{"2":{"33":1}}],["function",{"2":{"22":2}}],["fun",{"2":{"10":1}}],["feasible",{"2":{"15":1}}],["fill",{"2":{"33":1}}],["files",{"2":{"11":1}}],["file",{"2":{"4":1,"5":1,"13":1,"19":5,"22":5,"25":5,"28":5,"31":3,"33":1,"34":1}}],["first",{"2":{"25":2,"33":1}}],["fine",{"2":{"15":1}}],["foundational",{"2":{"15":1}}],["follow",{"2":{"12":1,"13":1}}],["following",{"2":{"3":1,"4":1,"7":1,"9":2,"10":1,"11":1,"12":1,"15":1}}],["fortenants",{"2":{"6":2,"7":4}}],["for",{"2":{"2":2,"3":3,"4":2,"5":2,"6":9,"7":10,"10":4,"11":2,"12":1,"15":6,"17":1,"19":2,"20":1,"22":6,"26":2,"33":3,"34":2,"35":1}}],["💪🏾",{"2":{"3":2,"6":2,"7":2,"10":2}}],["x",{"2":{"3":4,"6":6,"7":12,"10":4}}],["names",{"2":{"11":1}}],["name",{"2":{"4":6,"5":3,"6":1,"7":2,"11":6,"12":5,"13":5,"19":3,"21":2,"22":3,"25":3,"28":1,"31":2,"35":1}}],["net",{"2":{"9":2,"10":1}}],["needs",{"2":{"15":1,"34":1}}],["need",{"2":{"6":2,"33":1}}],["needed",{"2":{"6":1,"9":1}}],["next",{"0":{"14":1},"2":{"4":1,"11":1,"15":2}}],["newly",{"2":{"5":2,"26":2}}],["new",{"2":{"3":2,"5":3,"6":2,"7":4,"10":6,"13":3,"20":1,"33":1}}],["nor",{"2":{"6":1}}],["no",{"2":{"6":1,"22":2,"33":1}}],["notice",{"2":{"35":4}}],["not",{"2":{"5":1,"6":1,"10":1,"15":3,"22":5,"33":1,"35":4}}],["now",{"2":{"4":1,"10":1,"11":1,"12":2}}],["none",{"2":{"3":2,"6":3,"7":4,"10":2}}],["=",{"2":{"3":16,"6":16,"7":26,"10":16,"35":8}}],["via",{"2":{"15":1}}],["values",{"2":{"4":1,"11":1,"35":4}}],["variable",{"2":{"33":2}}],["var",{"2":{"3":6,"6":6,"7":8,"10":6}}],["version",{"2":{"34":1}}],["very",{"2":{"1":1,"2":1,"5":1}}],["ve",{"2":{"1":1,"15":1}}],["c|",{"2":{"34":1}}],["changes",{"2":{"33":1}}],["customerid",{"2":{"35":2}}],["customer",{"2":{"35":2}}],["custom",{"0":{"34":1},"2":{"19":1,"22":1,"34":1}}],["current",{"2":{"19":1,"22":1,"25":1,"28":1,"31":1}}],["curious",{"2":{"14":1,"15":1}}],["cli",{"2":{"9":1}}],["clidotnet",{"2":{"9":1}}],["cast",{"2":{"35":2}}],["cases",{"2":{"22":2}}],["case",{"2":{"5":1,"10":1}}],["carry",{"2":{"15":1}}],["care",{"2":{"7":1}}],["can",{"2":{"12":2,"15":4,"23":1,"34":1}}],["called",{"2":{"5":1,"7":1,"35":1}}],["create",{"2":{"10":1,"12":1,"22":2,"23":1,"33":3,"35":4}}],["created",{"2":{"4":1,"5":1,"11":1,"12":1,"13":1,"26":1}}],["createbuilder",{"2":{"3":2,"6":2,"7":2,"10":2}}],["c",{"2":{"3":1,"6":1,"7":1,"10":1,"19":1,"22":1}}],["column",{"2":{"22":2}}],["costly",{"2":{"15":1}}],["corporate",{"2":{"15":1,"34":1}}],["core",{"2":{"3":4,"6":4,"7":4,"10":4}}],["commit",{"2":{"35":4}}],["commandline",{"2":{"15":1}}],["commands",{"2":{"6":1,"15":1,"33":2}}],["command",{"0":{"16":1},"1":{"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1},"2":{"4":2,"5":1,"7":1,"9":1,"10":3,"11":2,"12":2,"13":1,"15":1,"33":5,"34":1}}],["compressed",{"2":{"15":1}}],["complicated",{"2":{"14":2}}],["connect",{"2":{"33":1,"34":1}}],["connectionstring",{"2":{"34":3}}],["connection",{"2":{"3":2,"6":2,"7":4,"10":2,"12":2,"15":1,"30":2,"33":1,"34":1}}],["concurrently",{"2":{"22":2}}],["concerns",{"2":{"15":1}}],["context",{"2":{"22":1,"33":1}}],["contents",{"2":{"3":2,"10":2}}],["contains",{"2":{"19":1,"22":3,"34":1}}],["containerport",{"2":{"34":2}}],["container",{"2":{"19":2,"22":2,"33":3,"34":4}}],["configure",{"2":{"10":1}}],["configured",{"2":{"3":1,"4":1,"6":3,"7":2,"11":1}}],["configuring",{"2":{"10":1}}],["configurations",{"2":{"14":2}}],["configuration",{"0":{"3":1,"10":1},"2":{"3":3,"4":1,"6":7,"7":13,"10":3,"11":1,"14":2,"34":1}}],["converged",{"2":{"2":1}}],["code",{"2":{"2":1,"22":1}}],["mt",{"2":{"35":10}}],["m",{"2":{"31":1}}],["my",{"2":{"22":4}}],["minimally",{"2":{"15":1}}],["might",{"2":{"15":1}}],["migrations",{"0":{"5":1,"20":1,"23":1,"26":1},"1":{"21":1,"22":1,"24":1,"25":1,"27":1,"28":1},"2":{"4":1,"5":5,"6":1,"7":3,"11":1,"12":3,"13":3,"15":3,"21":2,"23":1,"24":2,"26":1,"27":2,"29":1,"33":2,"35":10}}],["migration",{"0":{"4":1,"11":1,"13":1,"35":1},"2":{"4":1,"5":4,"11":1,"12":3,"13":5,"15":1,"17":1,"19":1,"20":1,"21":2,"22":10,"23":1,"25":6,"26":1,"31":4,"33":1,"35":17}}],["moving",{"2":{"15":1}}],["move",{"2":{"10":1}}],["more",{"2":{"5":2,"6":1,"7":1,"9":1,"13":1,"14":3,"15":2,"19":1,"22":1}}],["multitenanteddatabases",{"2":{"6":2,"7":4}}],["multi",{"0":{"6":1},"2":{"6":7,"7":2,"14":2}}],["multiple",{"0":{"7":1},"2":{"4":1,"7":1,"11":1,"14":2,"15":1}}],["must",{"2":{"5":1,"6":2,"15":1,"22":5}}],["met",{"2":{"2":1,"9":1}}],["made",{"2":{"15":1,"22":1}}],["managing",{"2":{"15":1}}],["management",{"2":{"19":1,"22":1}}],["manager",{"2":{"15":1}}],["manage",{"2":{"7":2}}],["manually",{"2":{"12":2,"33":2}}],["maintain",{"2":{"7":1}}],["maintains",{"2":{"5":1,"35":1}}],["mapget",{"2":{"3":2,"6":2,"7":2,"10":2}}],["marten",{"2":{"3":2,"4":2,"5":1,"6":5,"7":6,"10":6,"11":2,"15":4,"19":2,"22":2,"25":2,"28":2,"31":2,"33":6}}],["make",{"2":{"2":2,"15":1}}],["maybe",{"2":{"34":2}}],["may",{"2":{"1":1,"6":1,"7":1}}],["override",{"2":{"33":1}}],["overview",{"0":{"33":1}}],["overload",{"2":{"10":1}}],["o",{"2":{"25":1,"28":1}}],["operation",{"2":{"22":1,"35":1}}],["option",{"2":{"19":1,"22":3,"25":1,"28":1,"31":1,"34":2}}],["options",{"0":{"19":1,"22":1,"25":1,"28":1,"31":1},"2":{"3":12,"6":12,"7":24,"10":12,"18":2,"19":3,"21":2,"22":3,"24":2,"27":2,"30":2,"34":1}}],["otherwise",{"2":{"35":1}}],["other",{"2":{"15":1}}],["output",{"2":{"25":2,"28":2}}],["outside",{"2":{"22":1}}],["outcomes",{"2":{"15":1}}],["out",{"2":{"15":1}}],["outlined",{"2":{"13":1,"33":1}}],["our",{"2":{"5":1}}],["or",{"2":{"7":1,"25":2,"31":1,"34":1}}],["order",{"2":{"7":2,"15":1,"35":8}}],["orders",{"2":{"7":8,"35":14}}],["on",{"2":{"5":1,"10":1,"22":2,"33":3,"35":6}}],["only",{"2":{"5":1,"19":1,"22":1,"25":1,"28":1,"31":1}}],["one",{"2":{"5":1,"12":1,"13":2,"15":2,"19":1,"22":1,"25":1,"28":1,"31":1,"33":1}}],["once",{"2":{"2":1,"5":2,"15":1,"34":1}}],["ok",{"2":{"4":1,"10":1,"11":1,"13":1}}],["oakton",{"2":{"3":2,"6":2,"7":2,"10":2}}],["official",{"2":{"34":1}}],["often",{"2":{"15":1}}],["of",{"2":{"2":1,"5":1,"6":1,"7":2,"10":1,"12":1,"13":1,"15":3,"19":2,"22":7,"25":4,"28":2,"31":2,"33":3,"34":1,"35":1}}],["last",{"2":{"25":2,"31":1}}],["larger",{"2":{"22":2}}],["latest",{"2":{"2":1,"31":1}}],["lot",{"2":{"15":1}}],["local",{"2":{"15":1}}],["looks",{"2":{"7":1,"10":1,"34":1}}],["look",{"2":{"3":1,"6":1,"10":1,"35":1}}],["literally",{"2":{"33":1}}],["limitations",{"2":{"15":1}}],["line",{"0":{"16":1},"1":{"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1},"2":{"10":3,"15":1,"33":2}}],["like",{"2":{"3":1,"6":1,"7":1,"10":1,"15":5,"33":1,"34":1,"35":1}}],["least",{"2":{"15":1}}],["lead",{"2":{"15":2}}],["learn",{"2":{"5":1,"6":1,"7":1,"9":2,"10":1,"15":1,"19":1,"22":1}}],["learned",{"2":{"2":1,"6":1,"10":1}}],["let",{"2":{"7":1,"10":1,"33":1}}],["ll",{"2":{"5":2}}],["lt",{"2":{"3":2,"4":5,"5":4,"6":2,"7":6,"10":2,"11":5,"12":7,"13":5,"19":4,"21":2,"22":3,"25":5,"28":3,"30":2,"31":3,"35":1}}],["raise",{"2":{"35":4}}],["run",{"2":{"4":1,"11":1,"12":1,"15":1,"33":4}}],["runoaktoncommands",{"2":{"3":2,"6":2,"7":2,"10":2}}],["running",{"2":{"2":1,"4":1,"5":1,"6":1,"7":1,"9":1,"11":1,"12":2,"13":1,"22":2,"33":1,"34":1,"35":4}}],["registry",{"2":{"34":2}}],["reasons",{"2":{"15":1}}],["read",{"2":{"1":1,"2":1}}],["required",{"2":{"15":1}}],["references",{"2":{"14":1}}],["referenced",{"2":{"4":1}}],["replace",{"2":{"10":1}}],["result",{"2":{"15":1}}],["rest",{"2":{"7":1}}],["respectively",{"2":{"4":1,"7":1,"11":1}}],["recording",{"2":{"35":1}}],["record",{"2":{"5":1,"35":1}}],["return",{"2":{"3":4,"6":4,"7":6,"10":4}}],["re",{"2":{"2":1,"10":2}}],["purchased",{"2":{"35":2}}],["public",{"2":{"4":1,"11":1,"19":1}}],["pm",{"2":{"35":2}}],["pgport",{"2":{"34":2}}],["p",{"2":{"19":1,"22":1,"25":1,"28":1,"31":1}}],["pipeline",{"2":{"15":2}}],["phenomenal",{"2":{"15":1}}],["pending",{"2":{"12":1,"29":1}}],["password=postgres",{"2":{"34":2}}],["password",{"2":{"34":2}}],["path",{"2":{"19":4,"22":4,"25":5,"28":5,"31":2}}],["patch",{"2":{"15":1,"33":2}}],["part",{"2":{"10":1,"22":2}}],["package",{"2":{"10":2,"15":1}}],["please",{"2":{"10":1}}],["port=5470",{"2":{"34":2}}],["portbindings",{"2":{"34":2}}],["possible",{"2":{"34":1}}],["postgres",{"2":{"2":1,"5":2,"6":2,"19":1,"22":3,"33":1,"34":15}}],["points",{"2":{"33":1}}],["point",{"2":{"5":1,"10":1,"12":1,"15":1,"34":1}}],["private",{"2":{"34":1}}],["privileged",{"2":{"15":1}}],["pretty",{"2":{"7":1,"13":1}}],["prerequisites",{"0":{"2":1,"9":1},"2":{"2":1,"9":1}}],["problems",{"2":{"33":2}}],["problem",{"2":{"15":1}}],["prod",{"2":{"15":2}}],["providing",{"2":{"15":1}}],["proceeding",{"2":{"5":1,"10":1,"15":1}}],["process",{"2":{"2":1,"10":1,"15":2}}],["properly",{"2":{"4":1,"11":1}}],["projects",{"2":{"2":1,"10":2}}],["project",{"0":{"1":1},"1":{"2":1,"3":1,"4":1,"5":1},"2":{"1":1,"2":1,"4":3,"5":2,"7":1,"10":5,"11":3,"19":5,"22":5,"25":5,"28":5,"31":5,"33":3}}],["empty",{"2":{"33":1}}],["embedding",{"2":{"22":2}}],["errors",{"2":{"15":2}}],["each",{"2":{"15":1}}],["easily",{"2":{"15":1}}],["e",{"2":{"15":1,"22":1}}],["either",{"2":{"7":1,"12":1}}],["executing",{"2":{"15":1}}],["executed",{"2":{"15":1,"22":5,"33":1,"35":1}}],["execute",{"2":{"15":1,"22":1,"35":1}}],["exists",{"2":{"22":1,"35":5}}],["existing",{"0":{"1":1},"1":{"2":1,"3":1,"4":1,"5":1},"2":{"1":1,"2":2,"5":1,"10":2,"23":1,"26":1,"33":1}}],["exiting",{"2":{"10":1}}],["experience",{"2":{"10":1}}],["example",{"2":{"6":1,"7":1,"34":1}}],["extensions",{"2":{"3":2,"6":2,"7":2,"10":2}}],["end",{"2":{"35":8}}],["entire",{"2":{"22":1}}],["engineer",{"2":{"15":1}}],["encountered",{"2":{"15":1}}],["ensure",{"2":{"3":1,"5":1,"9":1,"22":3,"35":1}}],["environmentvariables",{"2":{"34":2}}],["environments",{"2":{"15":3}}],["environment",{"2":{"2":1,"15":5,"33":2,"34":1}}],["every",{"2":{"2":1,"6":1}}],["everything",{"2":{"2":1,"6":1,"10":1}}],["advanced",{"2":{"22":2}}],["addindexondatepurchased",{"2":{"35":6}}],["addindexoncustomerid",{"2":{"35":6}}],["additionally",{"2":{"22":2}}],["additional",{"2":{"6":1,"33":1}}],["added",{"2":{"13":1}}],["add",{"0":{"13":1,"20":1},"1":{"21":1,"22":1},"2":{"10":3,"13":3,"20":1,"21":2,"33":1}}],["addsingletenantdatabase",{"2":{"6":2,"7":4}}],["addmarten",{"2":{"10":1}}],["addmartenstorewithsablesupport",{"2":{"7":2}}],["addmartenwithsablesupport",{"2":{"3":2,"6":2,"7":2,"10":3}}],["addmultipletenantdatabase",{"2":{"6":2,"7":4}}],["avoid",{"2":{"22":2}}],["available",{"2":{"15":1}}],["aggregate",{"2":{"22":2}}],["against",{"2":{"15":1}}],["again",{"2":{"6":1}}],["actual",{"2":{"33":3}}],["accidentally",{"2":{"15":1}}],["across",{"2":{"2":1}}],["atomic",{"2":{"22":1}}],["at",{"2":{"10":2,"15":1}}],["after",{"2":{"7":1,"10":1}}],["about",{"2":{"5":1,"6":1,"7":1,"9":1,"33":2}}],["above",{"2":{"4":1,"5":1,"6":1,"7":1,"11":1,"12":2,"13":2}}],["assumes",{"2":{"10":1}}],["associated",{"2":{"4":1,"11":1}}],["as",{"2":{"5":1,"6":2,"7":1,"10":1,"15":1,"19":1,"22":3,"33":1,"35":5}}],["await",{"2":{"3":2,"6":2,"7":2,"10":2}}],["approved",{"2":{"15":1}}],["approach",{"2":{"15":2}}],["app",{"2":{"3":6,"6":6,"7":6,"10":6}}],["applies",{"2":{"6":1}}],["applied",{"2":{"5":4,"12":1,"15":2,"31":1,"35":3}}],["application",{"0":{"3":1,"10":1},"2":{"6":1,"15":1}}],["applicable",{"2":{"2":1,"10":1}}],["applying",{"2":{"15":1,"35":2}}],["apply",{"2":{"5":2,"12":2,"13":1,"15":1,"33":2}}],["applyoaktonextensions",{"2":{"3":2,"6":2,"7":2,"10":2}}],["autocreate",{"2":{"3":2,"6":2,"7":4,"10":2}}],["autocreateschemaobjects",{"2":{"3":2,"6":2,"7":4,"10":2}}],["args",{"2":{"3":4,"6":4,"7":4,"10":4}}],["are",{"2":{"2":1,"4":2,"5":2,"7":1,"9":1,"11":2,"15":1,"22":2}}],["alpha",{"2":{"15":2}}],["along",{"2":{"10":2}}],["already",{"2":{"2":1,"5":3,"6":1,"15":1,"26":1,"35":2}}],["all",{"2":{"2":2,"5":1,"6":2,"10":1,"13":1,"15":1}}],["a",{"2":{"2":1,"5":4,"6":4,"7":2,"10":4,"12":2,"13":4,"14":3,"15":14,"17":1,"19":2,"20":2,"22":12,"23":1,"25":1,"28":1,"29":1,"33":6,"34":8,"35":5}}],["anynomous",{"2":{"22":2}}],["any",{"2":{"6":2,"33":1,"34":1}}],["an",{"2":{"1":1,"2":1,"5":1,"10":1,"15":5,"22":2,"23":1,"26":1,"33":4,"34":3,"35":1}}],["and",{"0":{"35":1},"2":{"1":1,"4":2,"6":1,"7":2,"11":2,"12":2,"13":1,"15":4,"26":1,"33":2}}],["btree",{"2":{"35":4}}],["bring",{"2":{"23":1,"29":1}}],["block",{"2":{"22":5}}],["bloomberg",{"2":{"15":1}}],["bloomberglp",{"2":{"3":4,"6":4,"7":4,"9":2,"10":6}}],["by",{"2":{"9":1,"15":2,"22":2,"33":3,"34":1,"35":3}}],["backfilled",{"2":{"35":4}}],["backfill",{"0":{"5":1,"26":1},"1":{"27":1,"28":1},"2":{"5":5,"26":1,"27":2}}],["bashdotnet",{"2":{"9":1,"10":2}}],["bashsable",{"2":{"4":1,"5":1,"11":1,"12":2,"13":1,"18":1,"21":1,"24":1,"27":1,"30":1}}],["basic",{"2":{"6":2}}],["basictier",{"2":{"3":2,"6":2,"7":4,"10":2}}],["book",{"2":{"3":2,"6":2,"7":2,"10":2}}],["books",{"2":{"3":4,"6":14,"7":16,"10":4}}],["built",{"2":{"33":1,"34":1}}],["building",{"2":{"19":1,"22":1}}],["build",{"2":{"3":2,"6":2,"7":2,"10":2,"33":1,"34":1}}],["builder",{"2":{"3":10,"6":14,"7":22,"10":10}}],["but",{"2":{"2":1,"13":1,"15":3}}],["begin",{"2":{"35":8}}],["beginning",{"2":{"5":1}}],["because",{"2":{"15":1}}],["beta",{"2":{"15":2}}],["before",{"2":{"5":1,"9":1,"10":1,"15":3}}],["been",{"2":{"5":3,"15":1,"26":1,"35":1}}],["be",{"2":{"1":1,"2":1,"6":1,"7":1,"10":1,"15":4,"22":7,"23":1,"25":2,"31":1,"33":2,"34":2,"35":1}}],["db",{"2":{"34":2}}],["dynamically",{"2":{"33":1}}],["d",{"2":{"19":1,"22":1,"25":1,"28":1,"31":1,"33":2}}],["dropped",{"2":{"15":1}}],["directories",{"2":{"7":2}}],["directory",{"2":{"4":2,"5":1,"11":2,"12":1,"13":1,"19":1,"22":1,"25":2,"28":2,"31":1,"33":1}}],["different",{"2":{"6":1,"34":1}}],["data",{"2":{"35":4}}],["database=postgres",{"2":{"34":2}}],["database",{"0":{"7":1,"12":1,"29":1,"34":1},"1":{"30":1,"31":1},"2":{"4":7,"5":8,"6":3,"7":5,"11":7,"12":15,"13":7,"14":2,"15":3,"17":1,"19":6,"20":1,"22":5,"23":1,"25":4,"26":1,"28":4,"29":1,"30":2,"31":4,"33":5,"34":2,"35":3}}],["databaseschemaname",{"2":{"3":2,"6":2,"7":4,"10":2}}],["databases",{"2":{"2":1,"3":2,"4":1,"5":2,"6":8,"7":15,"10":2,"11":1}}],["datepurchasedutc",{"2":{"35":2}}],["date",{"2":{"5":2,"23":1,"26":1,"29":1,"35":2}}],["delete",{"2":{"33":1}}],["detected",{"2":{"33":1}}],["description",{"2":{"19":1,"22":1,"25":1,"28":1,"31":1}}],["described",{"2":{"2":1}}],["deployments",{"2":{"15":1}}],["deployment",{"2":{"15":2}}],["deployed",{"2":{"15":1}}],["dev",{"2":{"15":2}}],["development",{"2":{"15":1}}],["defaults",{"2":{"19":3,"22":2,"25":5,"28":3,"31":3}}],["default",{"2":{"4":2,"7":1,"11":2,"22":2,"34":1}}],["does",{"2":{"33":1}}],["doing",{"2":{"22":2}}],["done",{"2":{"15":1}}],["dotnet",{"2":{"9":1}}],["doc",{"2":{"35":8}}],["document",{"2":{"13":1}}],["documentation",{"0":{"0":1}}],["dockerhub",{"2":{"34":2}}],["docker",{"2":{"9":2,"33":3,"34":1}}],["do",{"2":{"2":1,"5":1,"13":2,"14":1,"22":2,"35":4}}],["was",{"2":{"25":2,"31":1}}],["want",{"2":{"13":1,"14":1,"15":1,"34":1}}],["wrapped",{"2":{"22":1}}],["wrapper",{"2":{"22":2}}],["wrap",{"2":{"22":2}}],["won",{"2":{"15":1,"35":1}}],["wondering",{"2":{"1":1,"6":1,"7":1}}],["work",{"2":{"9":1}}],["works",{"0":{"32":1},"1":{"33":1,"34":1,"35":1},"2":{"5":2,"9":1,"14":2,"15":3,"19":1,"22":1,"33":2}}],["would",{"2":{"7":1}}],["were",{"2":{"33":1}}],["week",{"2":{"15":1}}],["webapi",{"2":{"10":1}}],["webapidotnet",{"2":{"10":1}}],["webapplication",{"2":{"3":2,"6":2,"7":2,"10":2}}],["well",{"2":{"10":1,"15":1,"35":1}}],["went",{"2":{"6":1}}],["we",{"2":{"5":3,"10":1,"15":1}}],["weasel",{"2":{"3":2,"6":2,"7":2,"10":2}}],["why",{"0":{"15":1},"2":{"9":1,"15":1,"33":1}}],["which",{"2":{"7":1,"15":2,"19":1,"22":1,"25":1,"26":1,"28":1,"31":1,"33":1}}],["whenever",{"2":{"5":1}}],["when",{"2":{"4":1,"6":1,"7":1,"11":1,"22":4,"33":2}}],["where",{"2":{"2":1,"7":1,"33":1,"35":4}}],["whatever",{"2":{"10":1}}],["what",{"0":{"14":1},"2":{"2":1,"4":1,"11":1,"13":1,"22":2}}],["will",{"2":{"2":1,"6":1,"7":2,"10":1,"15":2,"22":4,"33":2,"35":2}}],["within",{"2":{"22":2,"25":1,"28":1}}],["without",{"2":{"5":1,"33":2}}],["with",{"2":{"2":1,"4":1,"5":1,"6":2,"7":1,"10":5,"11":1,"14":2,"15":2,"35":4}}],["yet",{"2":{"2":1}}],["your",{"2":{"2":2,"3":1,"4":2,"5":1,"7":1,"11":2,"12":2,"33":2}}],["you",{"2":{"1":1,"2":2,"6":3,"7":3,"10":3,"12":3,"13":2,"14":2,"15":1,"22":4,"33":3,"34":2}}],["human",{"2":{"15":1}}],["here",{"2":{"10":1}}],["happen",{"2":{"15":1}}],["had",{"2":{"5":1}}],["has",{"2":{"5":1,"15":1,"26":1,"34":1,"35":1}}],["have",{"2":{"2":2,"4":1,"5":2,"6":2,"10":2,"11":1,"12":3,"13":1,"14":2,"15":1,"34":1}}],["host=localhost",{"2":{"34":2}}],["hostport",{"2":{"34":2}}],["host",{"2":{"3":2,"6":2,"7":2,"10":2}}],["however",{"2":{"15":1,"22":2,"34":1}}],["how",{"0":{"32":1},"1":{"33":1,"34":1,"35":1},"2":{"1":1,"5":2,"7":1,"9":2,"10":1,"14":2,"15":5,"19":1,"22":1,"33":2,"34":1}}],["immutable",{"2":{"35":2}}],["image",{"2":{"34":5}}],["important",{"2":{"4":1,"11":1}}],["idx",{"2":{"35":4}}],["id",{"2":{"25":2,"31":1,"35":14}}],["idempotency",{"0":{"35":1}}],["idempotence",{"2":{"22":1}}],["idempotent",{"2":{"23":1,"35":1}}],["idemtotently",{"2":{"22":2}}],["identifier",{"2":{"6":1,"25":2,"31":1}}],["identical",{"2":{"6":2}}],["iotherdocumentstore",{"2":{"7":4}}],["included",{"2":{"25":2}}],["indempotent",{"2":{"22":2}}],["index",{"2":{"3":2,"10":2,"13":1,"22":4,"35":4}}],["invasive",{"2":{"15":1}}],["insert",{"2":{"35":4}}],["inserts",{"2":{"5":1}}],["install",{"2":{"9":2}}],["installed",{"2":{"9":2}}],["instance",{"2":{"7":1,"33":1}}],["instead",{"2":{"5":1,"22":1,"33":2}}],["initial",{"0":{"5":1}}],["initialized",{"2":{"5":1,"26":1}}],["initialize",{"0":{"4":1,"11":1},"2":{"17":1}}],["init",{"0":{"17":1},"1":{"18":1,"19":1},"2":{"4":2,"11":2,"18":2}}],["in",{"2":{"4":3,"5":4,"6":2,"7":4,"10":1,"11":3,"12":1,"13":1,"15":7,"19":2,"22":6,"25":4,"28":2,"31":2,"33":5,"34":1,"35":4}}],["infrastructure",{"0":{"4":1,"11":1},"2":{"5":1,"15":1,"17":1,"26":1}}],["introduces",{"2":{"33":1}}],["intuitive",{"2":{"15":1}}],["internal",{"2":{"34":1}}],["interface",{"0":{"16":1},"1":{"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1}}],["intend",{"2":{"7":1}}],["integrating",{"2":{"2":1}}],["integration",{"0":{"1":1},"1":{"2":1,"3":1,"4":1,"5":1},"2":{"10":3}}],["integrated",{"2":{"5":1}}],["integrate",{"2":{"1":1,"5":1,"10":2}}],["into",{"2":{"1":1,"2":1,"5":1,"10":2,"22":2,"35":4}}],["isreserved",{"2":{"22":2}}],["issues",{"2":{"22":2}}],["issue",{"2":{"15":1}}],["is",{"2":{"2":3,"3":1,"4":3,"5":2,"9":3,"10":3,"11":3,"15":3,"19":1,"22":4,"26":1,"33":5,"34":2,"35":1}}],["if",{"2":{"2":1,"5":1,"6":1,"10":1,"19":1,"22":2,"25":1,"28":1,"31":1,"33":1,"35":9}}],["its",{"2":{"10":2}}],["it",{"2":{"1":1,"5":4,"6":1,"7":2,"10":1,"12":3,"15":3,"19":1,"22":7,"25":1,"28":1,"31":1,"33":3,"34":1,"35":2}}],["type",{"2":{"22":2}}],["ticket",{"2":{"15":1}}],["timestamp",{"2":{"35":2}}],["timestamap",{"2":{"5":1}}],["time",{"2":{"13":1,"15":1}}],["t",{"2":{"15":2,"25":1,"35":1}}],["temporary",{"2":{"33":1}}],["test",{"2":{"15":1}}],["team",{"2":{"15":2}}],["tencancy",{"2":{"6":2}}],["tenants",{"2":{"6":2}}],["tenancy",{"0":{"6":1},"2":{"6":5,"14":2}}],["two",{"2":{"7":1}}],["twist",{"2":{"2":1}}],["tree",{"2":{"25":1,"28":1}}],["treat",{"2":{"5":1}}],["trasaction",{"2":{"22":2}}],["transaction",{"2":{"22":1,"35":1}}],["tracking",{"0":{"35":1}}],["track",{"2":{"5":1,"35":1}}],["talk",{"2":{"33":1}}],["talking",{"2":{"33":1}}],["taking",{"2":{"15":1}}],["take",{"2":{"7":1,"10":1,"12":1,"15":1}}],["takes",{"2":{"5":1}}],["table",{"2":{"5":2,"15":1,"22":2,"35":3}}],["than",{"2":{"15":1}}],["that",{"2":{"4":1,"5":3,"6":3,"10":3,"11":1,"12":2,"13":1,"15":3,"19":2,"22":6,"23":1,"25":4,"26":1,"31":2,"33":5,"34":5,"35":1}}],["through",{"2":{"6":1,"7":1,"10":1}}],["things",{"2":{"15":1,"33":1}}],["thing",{"2":{"5":1}}],["this",{"2":{"4":1,"5":1,"6":1,"10":4,"11":1,"15":2,"22":4,"34":1,"35":1}}],["those",{"2":{"2":1,"7":1,"22":3,"33":2}}],["they",{"2":{"22":1}}],["these",{"2":{"15":2}}],["then",{"2":{"12":1,"22":1,"33":2,"35":4}}],["them",{"2":{"5":2}}],["there",{"2":{"2":2,"5":1,"6":3,"10":1,"15":1,"19":1,"22":1,"25":1,"28":1,"31":1}}],["the",{"2":{"1":1,"2":3,"3":1,"4":9,"5":11,"6":6,"7":8,"9":3,"10":6,"11":9,"12":8,"13":4,"15":12,"17":1,"19":9,"22":8,"25":15,"26":2,"28":9,"31":8,"33":16,"34":6,"35":5}}],["top",{"2":{"33":1}}],["tooling",{"2":{"10":3,"15":1,"33":2}}],["toolset",{"2":{"33":1}}],["tools",{"2":{"9":2}}],["tool",{"2":{"9":3}}],["to",{"2":{"1":1,"2":5,"5":8,"6":3,"7":3,"9":2,"10":5,"12":4,"13":3,"14":1,"15":15,"19":7,"22":12,"23":2,"25":10,"26":1,"28":7,"29":2,"31":5,"33":10,"34":7,"35":2}}],["guard",{"2":{"15":1}}],["guides",{"2":{"10":1}}],["guide",{"2":{"1":1,"2":1,"6":2,"7":1,"10":2}}],["g",{"2":{"9":2,"15":1,"22":1}}],["given",{"2":{"6":2,"22":1}}],["generating",{"2":{"22":2}}],["generate",{"2":{"6":1}}],["generated",{"2":{"5":2,"25":2,"31":1,"33":1,"35":3}}],["getting",{"0":{"8":1},"1":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1},"2":{"1":1,"2":1,"6":2,"7":1,"10":1}}],["gt",{"2":{"3":8,"4":5,"5":4,"6":8,"7":16,"10":8,"11":5,"12":7,"13":5,"15":3,"19":4,"21":2,"22":3,"25":5,"28":3,"30":2,"31":3,"35":9}}],["good",{"2":{"13":1}}],["going",{"2":{"7":1,"10":2}}],["gold2",{"2":{"6":2,"7":4}}],["gold1",{"2":{"6":2,"7":4}}],["gold",{"2":{"6":2,"7":4}}],["goldtier",{"2":{"6":2,"7":4}}],["go",{"2":{"2":1}}],["shadow",{"0":{"34":1},"2":{"19":1,"22":1,"33":3,"34":2}}],["shown",{"2":{"6":1}}],["should",{"2":{"3":1,"4":1,"5":1,"10":1,"11":1,"12":2,"13":1,"25":2,"31":1,"34":1}}],["scripts",{"2":{"12":1,"15":4,"22":2}}],["script",{"0":{"23":1},"1":{"24":1,"25":1},"2":{"12":5,"15":2,"22":2,"23":1,"24":2,"25":3,"28":1,"33":3,"35":1}}],["schema",{"2":{"3":2,"4":5,"6":2,"7":4,"10":2,"11":5,"19":4,"35":1}}],["specify",{"2":{"6":1,"7":2}}],["sql",{"2":{"5":1,"35":1}}],["silver",{"2":{"6":2,"7":4}}],["silvertier",{"2":{"6":2,"7":4}}],["single",{"2":{"6":2,"22":1}}],["since",{"2":{"5":1}}],["similar",{"2":{"2":1,"10":1}}],["simple",{"2":{"1":1,"7":1,"13":1,"15":1}}],["string",{"2":{"12":2,"15":1,"30":2,"33":1,"34":1}}],["strategies",{"2":{"12":1,"13":1}}],["structures",{"2":{"6":2}}],["still",{"2":{"6":1}}],["storeoptions",{"2":{"3":2,"6":2,"7":4,"10":2}}],["stage",{"2":{"33":1}}],["standard",{"2":{"15":1}}],["starting",{"2":{"9":1}}],["started",{"0":{"8":1},"1":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1},"2":{"1":1,"2":1,"6":2,"7":1,"10":1}}],["statements",{"2":{"22":5}}],["state",{"2":{"2":1}}],["select",{"2":{"35":4}}],["sequential",{"2":{"15":1}}],["separate",{"2":{"7":2}}],["see",{"2":{"5":1,"6":2,"7":1,"9":2,"10":1,"14":5,"15":1,"19":1,"22":1}}],["services",{"2":{"3":2,"6":2,"7":4,"10":2}}],["setups",{"2":{"6":1,"7":2}}],["setup",{"0":{"6":1,"7":1},"2":{"6":3,"14":3}}],["set",{"2":{"2":1,"6":1,"22":2,"33":2}}],["surface",{"2":{"15":1}}],["sure",{"2":{"2":2,"15":1}}],["submit",{"2":{"15":1}}],["sufficiently",{"2":{"15":1}}],["such",{"2":{"6":1,"22":1}}],["support",{"2":{"3":1,"10":3,"33":2}}],["saved",{"2":{"33":1}}],["save",{"2":{"25":1,"28":1}}],["say",{"2":{"7":1}}],["sample",{"2":{"6":2,"14":2}}],["samples",{"2":{"3":2,"6":2,"7":2,"10":2}}],["same",{"2":{"2":1,"4":1,"11":1,"15":1,"33":1,"35":1}}],["sabledotnet",{"2":{"10":1}}],["sable",{"0":{"15":1,"17":1,"20":1,"23":1,"26":1,"29":1,"32":1},"1":{"18":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"28":1,"30":1,"31":1,"33":1,"34":1,"35":1},"2":{"1":1,"2":1,"3":5,"4":2,"5":9,"6":5,"7":8,"9":4,"10":8,"11":2,"12":4,"13":2,"14":2,"15":2,"18":1,"19":1,"21":1,"22":3,"24":1,"25":1,"27":1,"28":1,"30":1,"33":10,"34":2,"35":13}}],["slight",{"2":{"2":1}}],["s",{"0":{"14":1},"2":{"1":1,"4":1,"5":2,"6":4,"7":2,"10":2,"11":1,"15":2,"19":2,"22":1,"25":1,"28":1,"31":1,"33":1,"34":1}}],["solves",{"2":{"15":1,"33":1}}],["some",{"2":{"4":1,"11":1,"14":1,"15":1,"22":2}}],["something",{"2":{"3":1,"6":1,"7":1,"10":1,"35":1}}],["so",{"2":{"1":1,"2":2,"5":2,"6":2,"10":1,"13":1,"15":1,"33":1}}]],"serializationVersion":2}`;export{e as default}; diff --git a/docs/assets/chunks/@localSearchIndexroot.b15700c6.js b/docs/assets/chunks/@localSearchIndexroot.b15700c6.js new file mode 100644 index 0000000..8fbd829 --- /dev/null +++ b/docs/assets/chunks/@localSearchIndexroot.b15700c6.js @@ -0,0 +1 @@ +const e=`{"documentCount":36,"nextId":36,"documentIds":{"0":"/sable/README.html#documentation","1":"/sable/guide/existing-project-integration.html#existing-project-integration","2":"/sable/guide/existing-project-integration.html#prerequisites","3":"/sable/guide/existing-project-integration.html#application-configuration","4":"/sable/guide/existing-project-integration.html#initialize-migration-infrastructure","5":"/sable/guide/existing-project-integration.html#backfill-initial-migrations","6":"/sable/guide/multi-tenancy-setup.html#multi-tenancy-setup","7":"/sable/guide/multiple-database-setup.html#multiple-database-setup","8":"/sable/introduction/getting-started.html#getting-started","9":"/sable/introduction/getting-started.html#prerequisites","10":"/sable/introduction/getting-started.html#application-configuration","11":"/sable/introduction/getting-started.html#initialize-migration-infrastructure","12":"/sable/introduction/getting-started.html#update-database","13":"/sable/introduction/getting-started.html#add-migration","14":"/sable/introduction/getting-started.html#what-s-next","15":"/sable/introduction/why-sable.html#why-sable","16":"/sable/reference/cli.html#command-line-interface","17":"/sable/reference/cli.html#sable-init","18":"/sable/reference/cli.html#usage","19":"/sable/reference/cli.html#options","20":"/sable/reference/cli.html#sable-migrations-add","21":"/sable/reference/cli.html#usage-1","22":"/sable/reference/cli.html#options-1","23":"/sable/reference/cli.html#sable-migrations-script","24":"/sable/reference/cli.html#usage-2","25":"/sable/reference/cli.html#options-2","26":"/sable/reference/cli.html#sable-migrations-backfill","27":"/sable/reference/cli.html#usage-3","28":"/sable/reference/cli.html#options-3","29":"/sable/reference/cli.html#sable-database-update","30":"/sable/reference/cli.html#usage-4","31":"/sable/reference/cli.html#options-4","32":"/sable/reference/how-sable-works.html#how-sable-works","33":"/sable/reference/how-sable-works.html#overview","34":"/sable/reference/how-sable-works.html#custom-shadow-database","35":"/sable/reference/how-sable-works.html#migration-tracking-and-idempotency"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,1],"1":[3,1,25],"2":[1,3,66],"3":[2,3,63],"4":[3,3,55],"5":[3,3,111],"6":[3,1,150],"7":[3,1,141],"8":[2,1,1],"9":[1,2,40],"10":[2,2,155],"11":[3,2,56],"12":[2,2,51],"13":[2,2,52],"14":[4,2,36],"15":[3,1,188],"16":[3,1,1],"17":[2,3,8],"18":[1,5,5],"19":[1,5,56],"20":[3,3,7],"21":[1,6,10],"22":[1,6,136],"23":[3,3,19],"24":[1,6,6],"25":[1,6,53],"26":[3,3,24],"27":[1,6,6],"28":[1,6,38],"29":[3,3,10],"30":[1,6,10],"31":[1,6,43],"32":[3,1,1],"33":[1,3,130],"34":[3,3,95],"35":[4,3,119]},"averageFieldLength":[2.111111111111111,3.1666666666666665,54.666666666666664],"storedFields":{"0":{"title":"Documentation","titles":[]},"1":{"title":"Existing Project Integration","titles":[]},"2":{"title":"Prerequisites","titles":["Existing Project Integration"]},"3":{"title":"Application Configuration","titles":["Existing Project Integration"]},"4":{"title":"Initialize Migration Infrastructure","titles":["Existing Project Integration"]},"5":{"title":"Backfill Initial Migrations","titles":["Existing Project Integration"]},"6":{"title":"Multi-tenancy Setup","titles":[]},"7":{"title":"Multiple Database Setup","titles":[]},"8":{"title":"Getting Started","titles":[]},"9":{"title":"Prerequisites","titles":["Getting Started"]},"10":{"title":"Application Configuration","titles":["Getting Started"]},"11":{"title":"Initialize Migration Infrastructure","titles":["Getting Started"]},"12":{"title":"Update Database","titles":["Getting Started"]},"13":{"title":"Add Migration","titles":["Getting Started"]},"14":{"title":"What's Next?","titles":["Getting Started"]},"15":{"title":"Why Sable?","titles":[]},"16":{"title":"Command Line Interface","titles":[]},"17":{"title":"sable init","titles":["Command Line Interface"]},"18":{"title":"Usage","titles":["Command Line Interface","sable init"]},"19":{"title":"Options","titles":["Command Line Interface","sable init"]},"20":{"title":"sable migrations add","titles":["Command Line Interface"]},"21":{"title":"Usage","titles":["Command Line Interface","sable migrations add"]},"22":{"title":"Options","titles":["Command Line Interface","sable migrations add"]},"23":{"title":"sable migrations script","titles":["Command Line Interface"]},"24":{"title":"Usage","titles":["Command Line Interface","sable migrations script"]},"25":{"title":"Options","titles":["Command Line Interface","sable migrations script"]},"26":{"title":"sable migrations backfill","titles":["Command Line Interface"]},"27":{"title":"Usage","titles":["Command Line Interface","sable migrations backfill"]},"28":{"title":"Options","titles":["Command Line Interface","sable migrations backfill"]},"29":{"title":"sable database update","titles":["Command Line Interface"]},"30":{"title":"Usage","titles":["Command Line Interface","sable database update"]},"31":{"title":"Options","titles":["Command Line Interface","sable database update"]},"32":{"title":"How Sable Works","titles":[]},"33":{"title":"Overview","titles":["How Sable Works"]},"34":{"title":"Custom Shadow Database","titles":["How Sable Works"]},"35":{"title":"Migration Tracking and Idempotency","titles":["How Sable Works"]}},"dirtCount":0,"index":[["0",{"2":{"35":4}}],["39",{"2":{"35":40}}],["32",{"2":{"35":2}}],["$$",{"2":{"35":8}}],["48",{"2":{"35":2}}],["20231014233240",{"2":{"35":6}}],["20231013224735",{"2":{"35":6}}],["2023",{"2":{"35":2}}],["5432",{"2":{"34":4}}],["5470",{"2":{"34":2}}],["11",{"2":{"35":2}}],["14",{"2":{"35":2}}],["10",{"2":{"35":2}}],["1",{"2":{"34":2,"35":4}}],["15",{"2":{"34":2}}],["questions",{"2":{"15":1}}],["quot",{"2":{"3":16,"6":40,"7":72,"10":16,"34":64}}],["json",{"2":{"19":1,"22":1,"34":2}}],["job",{"2":{"15":1}}],["just",{"2":{"5":2,"6":1,"7":2,"13":3,"15":2,"33":2,"34":1}}],["know",{"2":{"14":1,"15":2,"22":2}}],["keep",{"2":{"5":1,"35":1}}],["utc",{"2":{"35":2}}],["uuid",{"2":{"35":2}}],["unless",{"2":{"22":2}}],["usage",{"0":{"18":1,"21":1,"24":1,"27":1,"30":1}}],["username=postgres",{"2":{"34":2}}],["user",{"2":{"34":2}}],["uses",{"2":{"34":1}}],["used",{"2":{"11":1,"15":1,"19":1,"22":1,"23":1,"33":2,"34":2}}],["use",{"2":{"7":1,"19":1,"22":5,"25":1,"28":1,"29":1,"31":1,"33":1,"34":3}}],["using",{"2":{"3":10,"6":10,"7":10,"10":11,"19":1,"22":1,"25":1,"28":1,"31":1,"33":2,"35":4}}],["update",{"0":{"12":1,"29":1},"1":{"30":1,"31":1},"2":{"12":3,"13":2,"30":2}}],["up",{"2":{"5":2,"23":1,"26":1,"29":1}}],["fact",{"2":{"33":1}}],["far",{"2":{"13":1}}],["f",{"2":{"25":1}}],["flag",{"2":{"22":2}}],["frame",{"2":{"15":1}}],["from",{"2":{"5":2,"15":1,"23":1,"25":1,"33":1,"34":4,"35":4}}],["furthermore",{"2":{"15":1}}],["functionality",{"2":{"33":1}}],["function",{"2":{"22":2}}],["fun",{"2":{"10":1}}],["feasible",{"2":{"15":1}}],["fill",{"2":{"33":1}}],["files",{"2":{"11":1}}],["file",{"2":{"4":1,"5":1,"13":1,"19":5,"22":5,"25":5,"28":5,"31":3,"33":1,"34":1}}],["first",{"2":{"25":2,"33":1}}],["fine",{"2":{"15":1}}],["foundational",{"2":{"15":1}}],["follow",{"2":{"12":1,"13":1}}],["following",{"2":{"3":1,"4":1,"7":1,"9":2,"10":1,"11":1,"12":1,"15":1}}],["fortenants",{"2":{"6":2,"7":4}}],["for",{"2":{"2":2,"3":3,"4":2,"5":2,"6":9,"7":10,"10":4,"11":2,"12":1,"15":6,"17":1,"19":2,"20":1,"22":6,"26":2,"33":3,"34":2,"35":1}}],["💪🏾",{"2":{"3":2,"6":2,"7":2,"10":2}}],["x",{"2":{"3":4,"6":6,"7":12,"10":4}}],["names",{"2":{"11":1}}],["name",{"2":{"4":6,"5":3,"6":1,"7":2,"11":6,"12":5,"13":5,"19":3,"21":2,"22":3,"25":3,"28":1,"31":2,"35":1}}],["net",{"2":{"9":2,"10":1}}],["needs",{"2":{"15":1,"34":1}}],["need",{"2":{"6":2,"33":1}}],["needed",{"2":{"6":1,"9":1}}],["next",{"0":{"14":1},"2":{"4":1,"11":1,"15":2}}],["newly",{"2":{"5":2,"26":2}}],["new",{"2":{"3":2,"5":3,"6":2,"7":4,"10":6,"13":3,"20":1,"33":1}}],["nor",{"2":{"6":1}}],["no",{"2":{"6":1,"22":2,"33":1}}],["notice",{"2":{"35":4}}],["not",{"2":{"5":1,"6":1,"10":1,"15":3,"22":5,"33":1,"35":4}}],["now",{"2":{"4":1,"10":1,"11":1,"12":2}}],["none",{"2":{"3":2,"6":3,"7":4,"10":2}}],["=",{"2":{"3":16,"6":16,"7":26,"10":16,"35":8}}],["via",{"2":{"15":1}}],["values",{"2":{"4":1,"11":1,"35":4}}],["variable",{"2":{"33":2}}],["var",{"2":{"3":6,"6":6,"7":8,"10":6}}],["version",{"2":{"34":1}}],["very",{"2":{"1":1,"2":1,"5":1}}],["ve",{"2":{"1":1,"15":1}}],["c|",{"2":{"34":1}}],["changes",{"2":{"33":1}}],["customerid",{"2":{"35":2}}],["customer",{"2":{"35":2}}],["custom",{"0":{"34":1},"2":{"19":1,"22":1,"34":1}}],["current",{"2":{"19":1,"22":1,"25":1,"28":1,"31":1}}],["curious",{"2":{"14":1,"15":1}}],["cli",{"2":{"9":1}}],["clidotnet",{"2":{"9":1}}],["cast",{"2":{"35":2}}],["cases",{"2":{"22":2}}],["case",{"2":{"5":1,"10":1}}],["carry",{"2":{"15":1}}],["care",{"2":{"7":1}}],["can",{"2":{"12":2,"15":4,"23":1,"34":1}}],["called",{"2":{"5":1,"7":1,"35":1}}],["create",{"2":{"10":1,"12":1,"22":2,"23":1,"33":3,"35":4}}],["created",{"2":{"4":1,"5":1,"11":1,"12":1,"13":1,"26":1}}],["createbuilder",{"2":{"3":2,"6":2,"7":2,"10":2}}],["c",{"2":{"3":1,"6":1,"7":1,"10":1,"19":1,"22":1}}],["column",{"2":{"22":2}}],["costly",{"2":{"15":1}}],["corporate",{"2":{"15":1,"34":1}}],["core",{"2":{"3":4,"6":4,"7":4,"10":4}}],["commit",{"2":{"35":4}}],["commandline",{"2":{"15":1}}],["commands",{"2":{"6":1,"15":1,"33":2}}],["command",{"0":{"16":1},"1":{"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1},"2":{"4":2,"5":1,"7":1,"9":1,"10":3,"11":2,"12":2,"13":1,"15":1,"33":5,"34":1}}],["compressed",{"2":{"15":1}}],["complicated",{"2":{"14":2}}],["connect",{"2":{"33":1,"34":1}}],["connectionstring",{"2":{"34":3}}],["connection",{"2":{"3":2,"6":2,"7":4,"10":2,"12":2,"15":1,"30":2,"33":1,"34":1}}],["concurrently",{"2":{"22":2}}],["concerns",{"2":{"15":1}}],["context",{"2":{"22":1,"33":1}}],["contents",{"2":{"3":2,"10":2}}],["contains",{"2":{"19":1,"22":3,"34":1}}],["containerport",{"2":{"34":2}}],["container",{"2":{"19":2,"22":2,"33":3,"34":4}}],["configure",{"2":{"10":1}}],["configured",{"2":{"3":1,"4":1,"6":3,"7":2,"11":1}}],["configuring",{"2":{"10":1}}],["configurations",{"2":{"14":2}}],["configuration",{"0":{"3":1,"10":1},"2":{"3":3,"4":1,"6":7,"7":13,"10":3,"11":1,"14":2,"34":1}}],["converged",{"2":{"2":1}}],["code",{"2":{"2":1,"22":1}}],["mt",{"2":{"35":10}}],["m",{"2":{"31":1}}],["my",{"2":{"22":4}}],["minimally",{"2":{"15":1}}],["might",{"2":{"15":1}}],["migrations",{"0":{"5":1,"20":1,"23":1,"26":1},"1":{"21":1,"22":1,"24":1,"25":1,"27":1,"28":1},"2":{"4":1,"5":5,"6":1,"7":3,"11":1,"12":3,"13":3,"15":3,"21":2,"23":1,"24":2,"26":1,"27":2,"29":1,"33":2,"35":10}}],["migration",{"0":{"4":1,"11":1,"13":1,"35":1},"2":{"4":1,"5":4,"11":1,"12":3,"13":5,"15":1,"17":1,"19":1,"20":1,"21":2,"22":10,"23":1,"25":6,"26":1,"31":4,"33":1,"35":17}}],["moving",{"2":{"15":1}}],["move",{"2":{"10":1}}],["more",{"2":{"5":2,"6":1,"7":1,"9":1,"13":1,"14":3,"15":2,"19":1,"22":1}}],["multitenanteddatabases",{"2":{"6":2,"7":4}}],["multi",{"0":{"6":1},"2":{"6":7,"7":2,"14":2}}],["multiple",{"0":{"7":1},"2":{"4":1,"7":1,"11":1,"14":2,"15":1}}],["must",{"2":{"5":1,"6":2,"15":1,"22":5}}],["met",{"2":{"2":1,"9":1}}],["made",{"2":{"15":1,"22":1}}],["managing",{"2":{"15":1}}],["management",{"2":{"19":1,"22":1}}],["manager",{"2":{"15":1}}],["manage",{"2":{"7":2}}],["manually",{"2":{"12":2,"33":2}}],["maintain",{"2":{"7":1}}],["maintains",{"2":{"5":1,"35":1}}],["mapget",{"2":{"3":2,"6":2,"7":2,"10":2}}],["marten",{"2":{"3":2,"4":2,"5":1,"6":5,"7":6,"10":6,"11":2,"15":4,"19":2,"22":2,"25":2,"28":2,"31":2,"33":6}}],["make",{"2":{"2":2,"15":1}}],["maybe",{"2":{"34":2}}],["may",{"2":{"1":1,"6":1,"7":1}}],["override",{"2":{"33":1}}],["overview",{"0":{"33":1}}],["overload",{"2":{"10":1}}],["o",{"2":{"25":1,"28":1}}],["operation",{"2":{"22":1,"35":1}}],["option",{"2":{"19":1,"22":3,"25":1,"28":1,"31":1,"34":2}}],["options",{"0":{"19":1,"22":1,"25":1,"28":1,"31":1},"2":{"3":12,"6":12,"7":24,"10":12,"18":2,"19":3,"21":2,"22":3,"24":2,"27":2,"30":2,"34":1}}],["otherwise",{"2":{"35":1}}],["other",{"2":{"15":1}}],["output",{"2":{"25":2,"28":2}}],["outside",{"2":{"22":1}}],["outcomes",{"2":{"15":1}}],["out",{"2":{"15":1}}],["outlined",{"2":{"13":1,"33":1}}],["our",{"2":{"5":1}}],["or",{"2":{"7":1,"25":2,"31":1,"34":1}}],["order",{"2":{"7":2,"15":1,"35":8}}],["orders",{"2":{"7":8,"35":14}}],["on",{"2":{"5":1,"10":1,"22":2,"33":3,"35":6}}],["only",{"2":{"5":1,"19":1,"22":1,"25":1,"28":1,"31":1}}],["one",{"2":{"5":1,"12":1,"13":2,"15":2,"19":1,"22":1,"25":1,"28":1,"31":1,"33":1}}],["once",{"2":{"2":1,"5":2,"15":1,"34":1}}],["ok",{"2":{"4":1,"10":1,"11":1,"13":1}}],["oakton",{"2":{"3":2,"6":2,"7":2,"10":2}}],["official",{"2":{"34":1}}],["often",{"2":{"15":1}}],["of",{"2":{"2":1,"5":1,"6":1,"7":2,"10":1,"12":1,"13":1,"15":3,"19":2,"22":7,"25":4,"28":2,"31":2,"33":3,"34":1,"35":1}}],["last",{"2":{"25":2,"31":1}}],["larger",{"2":{"22":2}}],["latest",{"2":{"2":1,"31":1}}],["lot",{"2":{"15":1}}],["local",{"2":{"15":1}}],["looks",{"2":{"7":1,"10":1,"34":1}}],["look",{"2":{"3":1,"6":1,"10":1,"35":1}}],["literally",{"2":{"33":1}}],["limitations",{"2":{"15":1}}],["line",{"0":{"16":1},"1":{"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1},"2":{"10":3,"15":1,"33":2}}],["like",{"2":{"3":1,"6":1,"7":1,"10":1,"15":5,"33":1,"34":1,"35":1}}],["least",{"2":{"15":1}}],["lead",{"2":{"15":2}}],["learn",{"2":{"5":1,"6":1,"7":1,"9":2,"10":1,"15":1,"19":1,"22":1}}],["learned",{"2":{"2":1,"6":1,"10":1}}],["let",{"2":{"7":1,"10":1,"33":1}}],["ll",{"2":{"5":2}}],["lt",{"2":{"3":2,"4":5,"5":4,"6":2,"7":6,"10":2,"11":5,"12":7,"13":5,"19":4,"21":2,"22":3,"25":5,"28":3,"30":2,"31":3,"35":1}}],["raise",{"2":{"35":4}}],["run",{"2":{"4":1,"11":1,"12":1,"15":1,"33":4}}],["runoaktoncommands",{"2":{"3":2,"6":2,"7":2,"10":2}}],["running",{"2":{"2":1,"4":1,"5":1,"6":1,"7":1,"9":1,"11":1,"12":2,"13":1,"22":2,"33":1,"34":1,"35":4}}],["registry",{"2":{"34":2}}],["reasons",{"2":{"15":1}}],["read",{"2":{"1":1,"2":1}}],["required",{"2":{"15":1}}],["references",{"2":{"14":1}}],["referenced",{"2":{"4":1}}],["replace",{"2":{"10":1}}],["result",{"2":{"15":1}}],["rest",{"2":{"7":1}}],["respectively",{"2":{"4":1,"7":1,"11":1}}],["recording",{"2":{"35":1}}],["record",{"2":{"5":1,"35":1}}],["return",{"2":{"3":4,"6":4,"7":6,"10":4}}],["re",{"2":{"2":1,"10":2}}],["purchased",{"2":{"35":2}}],["public",{"2":{"4":1,"11":1,"19":1}}],["pm",{"2":{"35":2}}],["pgport",{"2":{"34":2}}],["p",{"2":{"19":1,"22":1,"25":1,"28":1,"31":1}}],["pipeline",{"2":{"15":2}}],["phenomenal",{"2":{"15":1}}],["pending",{"2":{"12":1,"29":1}}],["password=postgres",{"2":{"34":2}}],["password",{"2":{"34":2}}],["path",{"2":{"19":4,"22":4,"25":5,"28":5,"31":2}}],["patch",{"2":{"15":1,"33":2}}],["part",{"2":{"10":1,"22":2}}],["package",{"2":{"10":2,"15":1}}],["please",{"2":{"10":1}}],["port=5470",{"2":{"34":2}}],["portbindings",{"2":{"34":2}}],["possible",{"2":{"34":1}}],["postgres",{"2":{"2":1,"5":2,"6":2,"19":1,"22":3,"33":1,"34":15}}],["points",{"2":{"33":1}}],["point",{"2":{"5":1,"10":1,"12":1,"15":1,"34":1}}],["private",{"2":{"34":1}}],["privileged",{"2":{"15":1}}],["pretty",{"2":{"7":1,"13":1}}],["prerequisites",{"0":{"2":1,"9":1},"2":{"2":1,"9":1}}],["problems",{"2":{"33":2}}],["problem",{"2":{"15":1}}],["prod",{"2":{"15":2}}],["providing",{"2":{"15":1}}],["proceeding",{"2":{"5":1,"10":1,"15":1}}],["process",{"2":{"2":1,"10":1,"15":2}}],["properly",{"2":{"4":1,"11":1}}],["projects",{"2":{"2":1,"10":2}}],["project",{"0":{"1":1},"1":{"2":1,"3":1,"4":1,"5":1},"2":{"1":1,"2":1,"4":3,"5":2,"7":1,"10":5,"11":3,"19":5,"22":5,"25":5,"28":5,"31":5,"33":3}}],["empty",{"2":{"33":1}}],["embedding",{"2":{"22":2}}],["errors",{"2":{"15":2}}],["each",{"2":{"15":1}}],["easily",{"2":{"15":1}}],["e",{"2":{"15":1,"22":1}}],["either",{"2":{"7":1,"12":1}}],["executing",{"2":{"15":1}}],["executed",{"2":{"15":1,"22":5,"33":1,"35":1}}],["execute",{"2":{"15":1,"22":1,"35":1}}],["exists",{"2":{"22":1,"35":5}}],["existing",{"0":{"1":1},"1":{"2":1,"3":1,"4":1,"5":1},"2":{"1":1,"2":2,"5":1,"10":2,"23":1,"26":1,"33":1}}],["exiting",{"2":{"10":1}}],["experience",{"2":{"10":1}}],["example",{"2":{"6":1,"7":1,"34":1}}],["extensions",{"2":{"3":2,"6":2,"7":2,"10":2}}],["end",{"2":{"35":8}}],["entire",{"2":{"22":1}}],["engineer",{"2":{"15":1}}],["encountered",{"2":{"15":1}}],["ensure",{"2":{"3":1,"5":1,"9":1,"22":3,"35":1}}],["environmentvariables",{"2":{"34":2}}],["environments",{"2":{"15":3}}],["environment",{"2":{"2":1,"15":5,"33":2,"34":1}}],["every",{"2":{"2":1,"6":1}}],["everything",{"2":{"2":1,"6":1,"10":1}}],["advanced",{"2":{"22":2}}],["addindexondatepurchased",{"2":{"35":6}}],["addindexoncustomerid",{"2":{"35":6}}],["additionally",{"2":{"22":2}}],["additional",{"2":{"6":1,"33":1}}],["added",{"2":{"13":1}}],["add",{"0":{"13":1,"20":1},"1":{"21":1,"22":1},"2":{"10":3,"13":3,"20":1,"21":2,"33":1}}],["addsingletenantdatabase",{"2":{"6":2,"7":4}}],["addmarten",{"2":{"10":1}}],["addmartenstorewithsablesupport",{"2":{"7":2}}],["addmartenwithsablesupport",{"2":{"3":2,"6":2,"7":2,"10":3}}],["addmultipletenantdatabase",{"2":{"6":2,"7":4}}],["avoid",{"2":{"22":2}}],["available",{"2":{"15":1}}],["aggregate",{"2":{"22":2}}],["against",{"2":{"15":1}}],["again",{"2":{"6":1}}],["actual",{"2":{"33":3}}],["accidentally",{"2":{"15":1}}],["across",{"2":{"2":1}}],["atomic",{"2":{"22":1}}],["at",{"2":{"10":2,"15":1}}],["after",{"2":{"7":1,"10":1}}],["about",{"2":{"5":1,"6":1,"7":1,"9":1,"33":2}}],["above",{"2":{"4":1,"5":1,"6":1,"7":1,"11":1,"12":2,"13":2}}],["assumes",{"2":{"10":1}}],["associated",{"2":{"4":1,"11":1}}],["as",{"2":{"5":1,"6":2,"7":1,"10":1,"15":1,"19":1,"22":3,"33":1,"35":5}}],["await",{"2":{"3":2,"6":2,"7":2,"10":2}}],["approved",{"2":{"15":1}}],["approach",{"2":{"15":2}}],["app",{"2":{"3":6,"6":6,"7":6,"10":6}}],["applies",{"2":{"6":1}}],["applied",{"2":{"5":4,"12":1,"15":2,"31":1,"35":3}}],["application",{"0":{"3":1,"10":1},"2":{"6":1,"15":1}}],["applicable",{"2":{"2":1,"10":1}}],["applying",{"2":{"15":1,"35":2}}],["apply",{"2":{"5":2,"12":2,"13":1,"15":1,"33":2}}],["applyoaktonextensions",{"2":{"3":2,"6":2,"7":2,"10":2}}],["autocreate",{"2":{"3":2,"6":2,"7":4,"10":2}}],["autocreateschemaobjects",{"2":{"3":2,"6":2,"7":4,"10":2}}],["args",{"2":{"3":4,"6":4,"7":4,"10":4}}],["are",{"2":{"2":1,"4":2,"5":2,"7":1,"9":1,"11":2,"15":1,"22":2}}],["alpha",{"2":{"15":2}}],["along",{"2":{"10":2}}],["already",{"2":{"2":1,"5":3,"6":1,"15":1,"26":1,"35":2}}],["all",{"2":{"2":2,"5":1,"6":2,"10":1,"13":1,"15":1}}],["a",{"2":{"2":1,"5":4,"6":4,"7":2,"10":4,"12":2,"13":4,"14":3,"15":14,"17":1,"19":2,"20":2,"22":12,"23":1,"25":1,"28":1,"29":1,"33":6,"34":8,"35":5}}],["anynomous",{"2":{"22":2}}],["any",{"2":{"6":2,"33":1,"34":1}}],["an",{"2":{"1":1,"2":1,"5":1,"10":1,"15":5,"22":2,"23":1,"26":1,"33":4,"34":3,"35":1}}],["and",{"0":{"35":1},"2":{"1":1,"4":2,"6":1,"7":2,"11":2,"12":2,"13":1,"15":4,"26":1,"33":2}}],["btree",{"2":{"35":4}}],["bring",{"2":{"23":1,"29":1}}],["block",{"2":{"22":5}}],["bloomberg",{"2":{"15":1}}],["by",{"2":{"9":1,"15":2,"22":2,"33":3,"34":1,"35":3}}],["backfilled",{"2":{"35":4}}],["backfill",{"0":{"5":1,"26":1},"1":{"27":1,"28":1},"2":{"5":5,"26":1,"27":2}}],["bashdotnet",{"2":{"9":1,"10":2}}],["bashsable",{"2":{"4":1,"5":1,"11":1,"12":2,"13":1,"18":1,"21":1,"24":1,"27":1,"30":1}}],["basic",{"2":{"6":2}}],["basictier",{"2":{"3":2,"6":2,"7":4,"10":2}}],["book",{"2":{"3":2,"6":2,"7":2,"10":2}}],["books",{"2":{"3":4,"6":14,"7":16,"10":4}}],["built",{"2":{"33":1,"34":1}}],["building",{"2":{"19":1,"22":1}}],["build",{"2":{"3":2,"6":2,"7":2,"10":2,"33":1,"34":1}}],["builder",{"2":{"3":10,"6":14,"7":22,"10":10}}],["but",{"2":{"2":1,"13":1,"15":3}}],["begin",{"2":{"35":8}}],["beginning",{"2":{"5":1}}],["because",{"2":{"15":1}}],["beta",{"2":{"15":2}}],["before",{"2":{"5":1,"9":1,"10":1,"15":3}}],["been",{"2":{"5":3,"15":1,"26":1,"35":1}}],["be",{"2":{"1":1,"2":1,"6":1,"7":1,"10":1,"15":4,"22":7,"23":1,"25":2,"31":1,"33":2,"34":2,"35":1}}],["db",{"2":{"34":2}}],["dynamically",{"2":{"33":1}}],["d",{"2":{"19":1,"22":1,"25":1,"28":1,"31":1,"33":2}}],["dropped",{"2":{"15":1}}],["directories",{"2":{"7":2}}],["directory",{"2":{"4":2,"5":1,"11":2,"12":1,"13":1,"19":1,"22":1,"25":2,"28":2,"31":1,"33":1}}],["different",{"2":{"6":1,"34":1}}],["data",{"2":{"35":4}}],["database=postgres",{"2":{"34":2}}],["database",{"0":{"7":1,"12":1,"29":1,"34":1},"1":{"30":1,"31":1},"2":{"4":7,"5":8,"6":3,"7":5,"11":7,"12":15,"13":7,"14":2,"15":3,"17":1,"19":6,"20":1,"22":5,"23":1,"25":4,"26":1,"28":4,"29":1,"30":2,"31":4,"33":5,"34":2,"35":3}}],["databaseschemaname",{"2":{"3":2,"6":2,"7":4,"10":2}}],["databases",{"2":{"2":1,"3":2,"4":1,"5":2,"6":8,"7":15,"10":2,"11":1}}],["datepurchasedutc",{"2":{"35":2}}],["date",{"2":{"5":2,"23":1,"26":1,"29":1,"35":2}}],["delete",{"2":{"33":1}}],["detected",{"2":{"33":1}}],["description",{"2":{"19":1,"22":1,"25":1,"28":1,"31":1}}],["described",{"2":{"2":1}}],["deployments",{"2":{"15":1}}],["deployment",{"2":{"15":2}}],["deployed",{"2":{"15":1}}],["dev",{"2":{"15":2}}],["development",{"2":{"15":1}}],["defaults",{"2":{"19":3,"22":2,"25":5,"28":3,"31":3}}],["default",{"2":{"4":2,"7":1,"11":2,"22":2,"34":1}}],["does",{"2":{"33":1}}],["doing",{"2":{"22":2}}],["done",{"2":{"15":1}}],["dotnet",{"2":{"9":1}}],["doc",{"2":{"35":8}}],["document",{"2":{"13":1}}],["documentation",{"0":{"0":1}}],["dockerhub",{"2":{"34":2}}],["docker",{"2":{"9":2,"33":3,"34":1}}],["do",{"2":{"2":1,"5":1,"13":2,"14":1,"22":2,"35":4}}],["was",{"2":{"25":2,"31":1}}],["want",{"2":{"13":1,"14":1,"15":1,"34":1}}],["wrapped",{"2":{"22":1}}],["wrapper",{"2":{"22":2}}],["wrap",{"2":{"22":2}}],["won",{"2":{"15":1,"35":1}}],["wondering",{"2":{"1":1,"6":1,"7":1}}],["work",{"2":{"9":1}}],["works",{"0":{"32":1},"1":{"33":1,"34":1,"35":1},"2":{"5":2,"9":1,"14":2,"15":3,"19":1,"22":1,"33":2}}],["would",{"2":{"7":1}}],["were",{"2":{"33":1}}],["week",{"2":{"15":1}}],["webapi",{"2":{"10":1}}],["webapidotnet",{"2":{"10":1}}],["webapplication",{"2":{"3":2,"6":2,"7":2,"10":2}}],["well",{"2":{"10":1,"15":1,"35":1}}],["went",{"2":{"6":1}}],["we",{"2":{"5":3,"10":1,"15":1}}],["weasel",{"2":{"3":2,"6":2,"7":2,"10":2}}],["why",{"0":{"15":1},"2":{"9":1,"15":1,"33":1}}],["which",{"2":{"7":1,"15":2,"19":1,"22":1,"25":1,"26":1,"28":1,"31":1,"33":1}}],["whenever",{"2":{"5":1}}],["when",{"2":{"4":1,"6":1,"7":1,"11":1,"22":4,"33":2}}],["where",{"2":{"2":1,"7":1,"33":1,"35":4}}],["whatever",{"2":{"10":1}}],["what",{"0":{"14":1},"2":{"2":1,"4":1,"11":1,"13":1,"22":2}}],["will",{"2":{"2":1,"6":1,"7":2,"10":1,"15":2,"22":4,"33":2,"35":2}}],["within",{"2":{"22":2,"25":1,"28":1}}],["without",{"2":{"5":1,"33":2}}],["with",{"2":{"2":1,"4":1,"5":1,"6":2,"7":1,"10":5,"11":1,"14":2,"15":2,"35":4}}],["yet",{"2":{"2":1}}],["your",{"2":{"2":2,"3":1,"4":2,"5":1,"7":1,"11":2,"12":2,"33":2}}],["you",{"2":{"1":1,"2":2,"6":3,"7":3,"10":3,"12":3,"13":2,"14":2,"15":1,"22":4,"33":3,"34":2}}],["human",{"2":{"15":1}}],["here",{"2":{"10":1}}],["happen",{"2":{"15":1}}],["had",{"2":{"5":1}}],["has",{"2":{"5":1,"15":1,"26":1,"34":1,"35":1}}],["have",{"2":{"2":2,"4":1,"5":2,"6":2,"10":2,"11":1,"12":3,"13":1,"14":2,"15":1,"34":1}}],["host=localhost",{"2":{"34":2}}],["hostport",{"2":{"34":2}}],["host",{"2":{"3":2,"6":2,"7":2,"10":2}}],["however",{"2":{"15":1,"22":2,"34":1}}],["how",{"0":{"32":1},"1":{"33":1,"34":1,"35":1},"2":{"1":1,"5":2,"7":1,"9":2,"10":1,"14":2,"15":5,"19":1,"22":1,"33":2,"34":1}}],["immutable",{"2":{"35":2}}],["image",{"2":{"34":5}}],["important",{"2":{"4":1,"11":1}}],["idx",{"2":{"35":4}}],["id",{"2":{"25":2,"31":1,"35":14}}],["idempotency",{"0":{"35":1}}],["idempotence",{"2":{"22":1}}],["idempotent",{"2":{"23":1,"35":1}}],["idemtotently",{"2":{"22":2}}],["identifier",{"2":{"6":1,"25":2,"31":1}}],["identical",{"2":{"6":2}}],["iotherdocumentstore",{"2":{"7":4}}],["included",{"2":{"25":2}}],["indempotent",{"2":{"22":2}}],["index",{"2":{"3":2,"10":2,"13":1,"22":4,"35":4}}],["invasive",{"2":{"15":1}}],["insert",{"2":{"35":4}}],["inserts",{"2":{"5":1}}],["install",{"2":{"9":2}}],["installed",{"2":{"9":2}}],["instance",{"2":{"7":1,"33":1}}],["instead",{"2":{"5":1,"22":1,"33":2}}],["initial",{"0":{"5":1}}],["initialized",{"2":{"5":1,"26":1}}],["initialize",{"0":{"4":1,"11":1},"2":{"17":1}}],["init",{"0":{"17":1},"1":{"18":1,"19":1},"2":{"4":2,"11":2,"18":2}}],["in",{"2":{"4":3,"5":4,"6":2,"7":4,"10":1,"11":3,"12":1,"13":1,"15":7,"19":2,"22":6,"25":4,"28":2,"31":2,"33":5,"34":1,"35":4}}],["infrastructure",{"0":{"4":1,"11":1},"2":{"5":1,"15":1,"17":1,"26":1}}],["introduces",{"2":{"33":1}}],["intuitive",{"2":{"15":1}}],["internal",{"2":{"34":1}}],["interface",{"0":{"16":1},"1":{"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1}}],["intend",{"2":{"7":1}}],["integrating",{"2":{"2":1}}],["integration",{"0":{"1":1},"1":{"2":1,"3":1,"4":1,"5":1},"2":{"10":3}}],["integrated",{"2":{"5":1}}],["integrate",{"2":{"1":1,"5":1,"10":2}}],["into",{"2":{"1":1,"2":1,"5":1,"10":2,"22":2,"35":4}}],["isreserved",{"2":{"22":2}}],["issues",{"2":{"22":2}}],["issue",{"2":{"15":1}}],["is",{"2":{"2":3,"3":1,"4":3,"5":2,"9":3,"10":3,"11":3,"15":3,"19":1,"22":4,"26":1,"33":5,"34":2,"35":1}}],["if",{"2":{"2":1,"5":1,"6":1,"10":1,"19":1,"22":2,"25":1,"28":1,"31":1,"33":1,"35":9}}],["its",{"2":{"10":2}}],["it",{"2":{"1":1,"5":4,"6":1,"7":2,"10":1,"12":3,"15":3,"19":1,"22":7,"25":1,"28":1,"31":1,"33":3,"34":1,"35":2}}],["type",{"2":{"22":2}}],["ticket",{"2":{"15":1}}],["timestamp",{"2":{"35":2}}],["timestamap",{"2":{"5":1}}],["time",{"2":{"13":1,"15":1}}],["t",{"2":{"15":2,"25":1,"35":1}}],["temporary",{"2":{"33":1}}],["test",{"2":{"15":1}}],["team",{"2":{"15":2}}],["tencancy",{"2":{"6":2}}],["tenants",{"2":{"6":2}}],["tenancy",{"0":{"6":1},"2":{"6":5,"14":2}}],["two",{"2":{"7":1}}],["twist",{"2":{"2":1}}],["tree",{"2":{"25":1,"28":1}}],["treat",{"2":{"5":1}}],["trasaction",{"2":{"22":2}}],["transaction",{"2":{"22":1,"35":1}}],["tracking",{"0":{"35":1}}],["track",{"2":{"5":1,"35":1}}],["talk",{"2":{"33":1}}],["talking",{"2":{"33":1}}],["taking",{"2":{"15":1}}],["take",{"2":{"7":1,"10":1,"12":1,"15":1}}],["takes",{"2":{"5":1}}],["table",{"2":{"5":2,"15":1,"22":2,"35":3}}],["than",{"2":{"15":1}}],["that",{"2":{"4":1,"5":3,"6":3,"10":3,"11":1,"12":2,"13":1,"15":3,"19":2,"22":6,"23":1,"25":4,"26":1,"31":2,"33":5,"34":5,"35":1}}],["through",{"2":{"6":1,"7":1,"10":1}}],["things",{"2":{"15":1,"33":1}}],["thing",{"2":{"5":1}}],["this",{"2":{"4":1,"5":1,"6":1,"10":4,"11":1,"15":2,"22":4,"34":1,"35":1}}],["those",{"2":{"2":1,"7":1,"22":3,"33":2}}],["they",{"2":{"22":1}}],["these",{"2":{"15":2}}],["then",{"2":{"12":1,"22":1,"33":2,"35":4}}],["them",{"2":{"5":2}}],["there",{"2":{"2":2,"5":1,"6":3,"10":1,"15":1,"19":1,"22":1,"25":1,"28":1,"31":1}}],["the",{"2":{"1":1,"2":3,"3":1,"4":9,"5":11,"6":6,"7":8,"9":3,"10":6,"11":9,"12":8,"13":4,"15":12,"17":1,"19":9,"22":8,"25":15,"26":2,"28":9,"31":8,"33":16,"34":6,"35":5}}],["top",{"2":{"33":1}}],["tooling",{"2":{"10":3,"15":1,"33":2}}],["toolset",{"2":{"33":1}}],["tools",{"2":{"9":2}}],["tool",{"2":{"9":3}}],["to",{"2":{"1":1,"2":5,"5":8,"6":3,"7":3,"9":2,"10":5,"12":4,"13":3,"14":1,"15":15,"19":7,"22":12,"23":2,"25":10,"26":1,"28":7,"29":2,"31":5,"33":10,"34":7,"35":2}}],["guard",{"2":{"15":1}}],["guides",{"2":{"10":1}}],["guide",{"2":{"1":1,"2":1,"6":2,"7":1,"10":2}}],["g",{"2":{"9":2,"15":1,"22":1}}],["given",{"2":{"6":2,"22":1}}],["generating",{"2":{"22":2}}],["generate",{"2":{"6":1}}],["generated",{"2":{"5":2,"25":2,"31":1,"33":1,"35":3}}],["getting",{"0":{"8":1},"1":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1},"2":{"1":1,"2":1,"6":2,"7":1,"10":1}}],["gt",{"2":{"3":8,"4":5,"5":4,"6":8,"7":16,"10":8,"11":5,"12":7,"13":5,"15":3,"19":4,"21":2,"22":3,"25":5,"28":3,"30":2,"31":3,"35":9}}],["good",{"2":{"13":1}}],["going",{"2":{"7":1,"10":2}}],["gold2",{"2":{"6":2,"7":4}}],["gold1",{"2":{"6":2,"7":4}}],["gold",{"2":{"6":2,"7":4}}],["goldtier",{"2":{"6":2,"7":4}}],["go",{"2":{"2":1}}],["shadow",{"0":{"34":1},"2":{"19":1,"22":1,"33":3,"34":2}}],["shown",{"2":{"6":1}}],["should",{"2":{"3":1,"4":1,"5":1,"10":1,"11":1,"12":2,"13":1,"25":2,"31":1,"34":1}}],["scripts",{"2":{"12":1,"15":4,"22":2}}],["script",{"0":{"23":1},"1":{"24":1,"25":1},"2":{"12":5,"15":2,"22":2,"23":1,"24":2,"25":3,"28":1,"33":3,"35":1}}],["schema",{"2":{"3":2,"4":5,"6":2,"7":4,"10":2,"11":5,"19":4,"35":1}}],["specify",{"2":{"6":1,"7":2}}],["sql",{"2":{"5":1,"35":1}}],["silver",{"2":{"6":2,"7":4}}],["silvertier",{"2":{"6":2,"7":4}}],["single",{"2":{"6":2,"22":1}}],["since",{"2":{"5":1}}],["similar",{"2":{"2":1,"10":1}}],["simple",{"2":{"1":1,"7":1,"13":1,"15":1}}],["string",{"2":{"12":2,"15":1,"30":2,"33":1,"34":1}}],["strategies",{"2":{"12":1,"13":1}}],["structures",{"2":{"6":2}}],["still",{"2":{"6":1}}],["storeoptions",{"2":{"3":2,"6":2,"7":4,"10":2}}],["stage",{"2":{"33":1}}],["standard",{"2":{"15":1}}],["starting",{"2":{"9":1}}],["started",{"0":{"8":1},"1":{"9":1,"10":1,"11":1,"12":1,"13":1,"14":1},"2":{"1":1,"2":1,"6":2,"7":1,"10":1}}],["statements",{"2":{"22":5}}],["state",{"2":{"2":1}}],["select",{"2":{"35":4}}],["sequential",{"2":{"15":1}}],["separate",{"2":{"7":2}}],["see",{"2":{"5":1,"6":2,"7":1,"9":2,"10":1,"14":5,"15":1,"19":1,"22":1}}],["services",{"2":{"3":2,"6":2,"7":4,"10":2}}],["setups",{"2":{"6":1,"7":2}}],["setup",{"0":{"6":1,"7":1},"2":{"6":3,"14":3}}],["set",{"2":{"2":1,"6":1,"22":2,"33":2}}],["surface",{"2":{"15":1}}],["sure",{"2":{"2":2,"15":1}}],["submit",{"2":{"15":1}}],["sufficiently",{"2":{"15":1}}],["such",{"2":{"6":1,"22":1}}],["support",{"2":{"3":1,"10":3,"33":2}}],["saved",{"2":{"33":1}}],["save",{"2":{"25":1,"28":1}}],["say",{"2":{"7":1}}],["sample",{"2":{"6":2,"14":2}}],["samples",{"2":{"3":2,"6":2,"7":2,"10":2}}],["same",{"2":{"2":1,"4":1,"11":1,"15":1,"33":1,"35":1}}],["sabledotnet",{"2":{"10":1}}],["sable",{"0":{"15":1,"17":1,"20":1,"23":1,"26":1,"29":1,"32":1},"1":{"18":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"28":1,"30":1,"31":1,"33":1,"34":1,"35":1},"2":{"1":1,"2":1,"3":5,"4":2,"5":9,"6":5,"7":8,"9":4,"10":8,"11":2,"12":4,"13":2,"14":2,"15":2,"18":1,"19":1,"21":1,"22":3,"24":1,"25":1,"27":1,"28":1,"30":1,"33":10,"34":2,"35":13}}],["slight",{"2":{"2":1}}],["s",{"0":{"14":1},"2":{"1":1,"4":1,"5":2,"6":4,"7":2,"10":2,"11":1,"15":2,"19":2,"22":1,"25":1,"28":1,"31":1,"33":1,"34":1}}],["solves",{"2":{"15":1,"33":1}}],["some",{"2":{"4":1,"11":1,"14":1,"15":1,"22":2}}],["something",{"2":{"3":1,"6":1,"7":1,"10":1,"35":1}}],["so",{"2":{"1":1,"2":2,"5":2,"6":2,"10":1,"13":1,"15":1,"33":1}}]],"serializationVersion":2}`;export{e as default}; diff --git a/docs/assets/chunks/VPLocalSearchBox.4361d669.js b/docs/assets/chunks/VPLocalSearchBox.f83fd2dc.js similarity index 99% rename from docs/assets/chunks/VPLocalSearchBox.4361d669.js rename to docs/assets/chunks/VPLocalSearchBox.f83fd2dc.js index b3deb4c..5bb21e7 100644 --- a/docs/assets/chunks/VPLocalSearchBox.4361d669.js +++ b/docs/assets/chunks/VPLocalSearchBox.f83fd2dc.js @@ -1,4 +1,4 @@ -import{V as pt,h as ie,x as Be,af as kt,ag as Nt,d as It,E as be,ah as et,g as we,ai as Dt,aj as _t,y as Ot,ak as Rt,j as De,O as he,S as xe,al as Mt,am as Lt,W as Pt,s as zt,an as Bt,o as X,b as Vt,k as S,$ as $t,l as U,ao as Wt,ap as jt,aq as Kt,c as te,n as tt,e as Fe,D as rt,F as at,a as de,t as ve,ar as Jt,p as Ut,m as Ht,as as nt,at as Gt,a4 as qt,aa as Qt,_ as Yt}from"./framework.b8722102.js";import{u as Zt,c as Xt}from"./theme.d7145c28.js";const er={root:()=>pt(()=>import("./@localSearchIndexroot.62206a51.js"),[])};/*! +import{V as pt,h as ie,x as Be,af as kt,ag as Nt,d as It,E as be,ah as et,g as we,ai as Dt,aj as _t,y as Ot,ak as Rt,j as De,O as he,S as xe,al as Mt,am as Lt,W as Pt,s as zt,an as Bt,o as X,b as Vt,k as S,$ as $t,l as U,ao as Wt,ap as jt,aq as Kt,c as te,n as tt,e as Fe,D as rt,F as at,a as de,t as ve,ar as Jt,p as Ut,m as Ht,as as nt,at as Gt,a4 as qt,aa as Qt,_ as Yt}from"./framework.b8722102.js";import{u as Zt,c as Xt}from"./theme.6a9fdd37.js";const er={root:()=>pt(()=>import("./@localSearchIndexroot.b15700c6.js"),[])};/*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var yt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ae=yt.join(","),mt=typeof Element>"u",se=mt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ce=!mt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},Te=function o(e,t){var r;t===void 0&&(t=!0);var n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),a=n===""||n==="true",i=a||t&&e&&o(e.parentNode);return i},tr=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},gt=function(e,t,r){if(Te(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ae));return t&&se.call(e,Ae)&&n.unshift(e),n=n.filter(r),n},bt=function o(e,t,r){for(var n=[],a=Array.from(e);a.length;){var i=a.shift();if(!Te(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var d=se.call(i,Ae);d&&r.filter(i)&&(t||!e.includes(i))&&n.push(i);var h=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Te(h,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(h&&v){var m=o(h===!0?i.children:h.children,!0,r);r.flatten?n.push.apply(n,m):n.push({scopeParent:i,candidates:m})}else a.unshift.apply(a,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},oe=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||tr(e))&&!wt(e)?0:e.tabIndex},rr=function(e,t){var r=oe(e);return r<0&&t&&!wt(e)?0:r},ar=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},nr=function(e){return xt(e)&&e.type==="hidden"},ir=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},or=function(e,t){for(var r=0;rsummary:first-of-type"),i=a?e.parentElement:e;if(se.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof n=="function"){for(var s=e;e;){var u=e.parentElement,l=Ce(e);if(u&&!u.shadowRoot&&n(u)===!0)return it(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(cr(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return it(e);return!1},hr=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r=0)},vr=function o(e){var t=[],r=[];return e.forEach(function(n,a){var i=!!n.scopeParent,s=i?n.scopeParent:n,u=rr(s,i),l=i?o(n.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:a,tabIndex:u,item:n,isScope:i,content:l})}),r.sort(ar).reduce(function(n,a){return a.isScope?n.push.apply(n,a.content):n.push(a.content),n},[]).concat(t)},pr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=bt([e],t.includeContainer,{filter:Ve.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:dr}):r=gt(e,t.includeContainer,Ve.bind(null,t)),vr(r)},yr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=bt([e],t.includeContainer,{filter:ke.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=gt(e,t.includeContainer,ke.bind(null,t)),r},ue=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return se.call(e,Ae)===!1?!1:Ve(t,e)},mr=yt.concat("iframe").join(","),_e=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return se.call(e,mr)===!1?!1:ke(t,e)};/*! diff --git a/docs/assets/chunks/theme.d7145c28.js b/docs/assets/chunks/theme.6a9fdd37.js similarity index 99% rename from docs/assets/chunks/theme.d7145c28.js rename to docs/assets/chunks/theme.6a9fdd37.js index f263516..7459d80 100644 --- a/docs/assets/chunks/theme.d7145c28.js +++ b/docs/assets/chunks/theme.6a9fdd37.js @@ -1 +1 @@ -import{d as b,o as a,c as i,r as u,n as T,a as x,t as L,_ as m,b as $,w as v,T as ce,e as f,u as ze,i as De,f as ue,g as k,h as M,j as G,k as c,l,p as H,m as z,q as O,s as R,v as re,x as U,y as te,z as de,A as Ve,B as Ee,C as j,F as N,D as A,E as _e,G as Y,H as h,I as F,J as we,K as se,L as Z,M as ne,N as Fe,O as Oe,P as Le,Q as Ge,R as Ue,S as ke,U as je,V as Ke,W as Se,X as Me,Y as qe,Z as Re,$ as We,a0 as Ye}from"./framework.b8722102.js";const Je=b({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),i("span",{class:T(["VPBadge",e.type])},[u(e.$slots,"default",{},()=>[x(L(e.text),1)],!0)],2))}});const Xe=m(Je,[["__scopeId","data-v-ea5b2908"]]),Ze={key:0,class:"VPBackdrop"},Qe=b({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),$(ce,{name:"fade"},{default:v(()=>[e.show?(a(),i("div",Ze)):f("",!0)]),_:1}))}});const et=m(Qe,[["__scopeId","data-v-54a304ca"]]),P=ze;function tt(s,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(s,e):(s(),(n=!0)&&setTimeout(()=>n=!1,e))}}function le(s){return/^\//.test(s)?s:`/${s}`}function J(s){if(De(s))return s;const{site:e}=P(),{pathname:t,search:n,hash:o}=new URL(s,"http://a.com"),r=t.endsWith("/")||t.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,e.value.cleanUrls?"":".html")}${n}${o}`);return ue(r)}function X({removeCurrent:s=!0,correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:o,theme:r}=P(),d=k(()=>{var _,g;return{label:(_=t.value.locales[n.value])==null?void 0:_.label,link:((g=t.value.locales[n.value])==null?void 0:g.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:k(()=>Object.entries(t.value.locales).flatMap(([_,g])=>s&&d.value.label===g.label?[]:{text:g.label,link:st(g.link||(_==="root"?"/":`/${_}/`),r.value.i18nRouting!==!1&&e,o.value.relativePath.slice(d.value.link.length-1),!t.value.cleanUrls)})),currentLang:d}}function st(s,e,t,n){return e?s.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):s}const nt=s=>(H("data-v-b9c0c15a"),s=s(),z(),s),ot={class:"NotFound"},at={class:"code"},rt={class:"title"},lt=nt(()=>c("div",{class:"divider"},null,-1)),it={class:"quote"},ct={class:"action"},ut=["href","aria-label"],dt=b({__name:"NotFound",setup(s){const{site:e,theme:t}=P(),{localeLinks:n}=X({removeCurrent:!1}),o=M("/");return G(()=>{var d;const r=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");n.value.length&&(o.value=((d=n.value.find(({link:p})=>p.startsWith(r)))==null?void 0:d.link)||n.value[0].link)}),(r,d)=>{var p,_,g,V,y;return a(),i("div",ot,[c("p",at,L(((p=l(t).notFound)==null?void 0:p.code)??"404"),1),c("h1",rt,L(((_=l(t).notFound)==null?void 0:_.title)??"PAGE NOT FOUND"),1),lt,c("blockquote",it,L(((g=l(t).notFound)==null?void 0:g.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),c("div",ct,[c("a",{class:"link",href:l(ue)(o.value),"aria-label":((V=l(t).notFound)==null?void 0:V.linkLabel)??"go to home"},L(((y=l(t).notFound)==null?void 0:y.linkText)??"Take me home"),9,ut)])])}}});const _t=m(dt,[["__scopeId","data-v-b9c0c15a"]]);function Ne(s,e){if(Array.isArray(s))return Q(s);if(s==null)return[];e=le(e);const t=Object.keys(s).sort((o,r)=>r.split("/").length-o.split("/").length).find(o=>e.startsWith(le(o))),n=t?s[t]:[];return Array.isArray(n)?Q(n):Q(n.items,n.base)}function vt(s){const e=[];let t=0;for(const n in s){const o=s[n];if(o.items){t=e.push(o);continue}e[t]||e.push({items:[]}),e[t].items.push(o)}return e}function pt(s){const e=[];function t(n){for(const o of n)o.text&&o.link&&e.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&t(o.items)}return t(s),e}function ie(s,e){return Array.isArray(e)?e.some(t=>ie(s,t)):O(s,e.link)?!0:e.items?ie(s,e.items):!1}function Q(s,e){return[...s].map(t=>{const n={...t},o=n.base||e;return o&&n.link&&(n.link=o+n.link),n.items&&(n.items=Q(n.items,o)),n})}function D(){const{frontmatter:s,page:e,theme:t}=P(),n=re("(min-width: 960px)"),o=M(!1),r=k(()=>{const B=t.value.sidebar,w=e.value.relativePath;return B?Ne(B,w):[]}),d=M(r.value);U(r,(B,w)=>{JSON.stringify(B)!==JSON.stringify(w)&&(d.value=r.value)});const p=k(()=>s.value.sidebar!==!1&&d.value.length>0&&s.value.layout!=="home"),_=k(()=>g?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),g=k(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),V=k(()=>p.value&&n.value),y=k(()=>p.value?vt(d.value):[]);function I(){o.value=!0}function S(){o.value=!1}function C(){o.value?S():I()}return{isOpen:o,sidebar:d,sidebarGroups:y,hasSidebar:p,hasAside:g,leftAside:_,isSidebarEnabled:V,open:I,close:S,toggle:C}}function ht(s,e){let t;te(()=>{t=s.value?document.activeElement:void 0}),G(()=>{window.addEventListener("keyup",n)}),de(()=>{window.removeEventListener("keyup",n)});function n(o){o.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}const Ie=M(R?location.hash:"");R&&window.addEventListener("hashchange",()=>{Ie.value=location.hash});function ft(s){const{page:e}=P(),t=M(!1),n=k(()=>s.value.collapsed!=null),o=k(()=>!!s.value.link),r=M(!1),d=()=>{r.value=O(e.value.relativePath,s.value.link)};U([e,s,Ie],d),G(d);const p=k(()=>r.value?!0:s.value.items?ie(e.value.relativePath,s.value.items):!1),_=k(()=>!!(s.value.items&&s.value.items.length));te(()=>{t.value=!!(n.value&&s.value.collapsed)}),Ve(()=>{(r.value||p.value)&&(t.value=!1)});function g(){n.value&&(t.value=!t.value)}return{collapsed:t,collapsible:n,isLink:o,isActiveLink:r,hasActiveLink:p,hasChildren:_,toggle:g}}function mt(){const{hasSidebar:s}=D(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:k(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const gt=71;function ve(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function pe(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{title:bt(t),link:"#"+t.id,level:n}});return $t(e,s)}function bt(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function $t(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,o]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;s=s.filter(d=>d.level>=n&&d.level<=o);const r=[];e:for(let d=0;d=0;_--){const g=s[_];if(g.level{requestAnimationFrame(r),window.addEventListener("scroll",n)}),Ee(()=>{d(location.hash)}),de(()=>{window.removeEventListener("scroll",n)});function r(){if(!t.value)return;const p=[].slice.call(s.value.querySelectorAll(".outline-link")),_=[].slice.call(document.querySelectorAll(".content .header-anchor")).filter(S=>p.some(C=>C.hash===S.hash&&S.offsetParent!==null)),g=window.scrollY,V=window.innerHeight,y=document.body.offsetHeight,I=Math.abs(g+V-y)<1;if(_.length&&I){d(_[_.length-1].hash);return}for(let S=0;S<_.length;S++){const C=_[S],B=_[S+1],[w,K]=yt(S,C,B);if(w){d(K);return}}}function d(p){o&&o.classList.remove("active"),p==null?o=null:o=s.value.querySelector(`a[href="${decodeURIComponent(p)}"]`);const _=o;_?(_.classList.add("active"),e.value.style.top=_.offsetTop+33+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function ye(s){return s.parentElement.offsetTop-gt}function yt(s,e,t){const n=window.scrollY;return s===0&&n===0?[!0,null]:n{const o=j("VPDocOutlineItem",!0);return a(),i("ul",{class:T(t.root?"root":"nested")},[(a(!0),i(N,null,A(t.headers,({children:r,link:d,title:p})=>(a(),i("li",null,[c("a",{class:"outline-link",href:d,onClick:e,title:p},L(p),9,Pt),r!=null&&r.length?(a(),$(o,{key:0,headers:r},null,8,["headers"])):f("",!0)]))),256))],2)}}});const he=m(Vt,[["__scopeId","data-v-463da30f"]]),wt=s=>(H("data-v-3a6c4994"),s=s(),z(),s),Lt={class:"content"},St={class:"outline-title",role:"heading","aria-level":"2"},Mt={"aria-labelledby":"doc-outline-aria-label"},Nt=wt(()=>c("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),It=b({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=P(),n=_e([]);Y(()=>{n.value=pe(e.value.outline??t.value.outline)});const o=M(),r=M();return kt(o,r),(d,p)=>(a(),i("div",{class:T(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:o,role:"navigation"},[c("div",Lt,[c("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),c("div",St,L(l(ve)(l(t))),1),c("nav",Mt,[Nt,h(he,{headers:n.value,root:!0},null,8,["headers"])])])],2))}});const Tt=m(It,[["__scopeId","data-v-3a6c4994"]]),Ct={class:"VPDocAsideCarbonAds"},Bt=b({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,n)=>(a(),i("div",Ct,[h(l(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),At=s=>(H("data-v-cb998dce"),s=s(),z(),s),xt={class:"VPDocAside"},Ht=At(()=>c("div",{class:"spacer"},null,-1)),zt=b({__name:"VPDocAside",setup(s){const{theme:e}=P();return(t,n)=>(a(),i("div",xt,[u(t.$slots,"aside-top",{},void 0,!0),u(t.$slots,"aside-outline-before",{},void 0,!0),h(Tt),u(t.$slots,"aside-outline-after",{},void 0,!0),Ht,u(t.$slots,"aside-ads-before",{},void 0,!0),l(e).carbonAds?(a(),$(Bt,{key:0,"carbon-ads":l(e).carbonAds},null,8,["carbon-ads"])):f("",!0),u(t.$slots,"aside-ads-after",{},void 0,!0),u(t.$slots,"aside-bottom",{},void 0,!0)]))}});const Dt=m(zt,[["__scopeId","data-v-cb998dce"]]);function Et(){const{theme:s,page:e}=P();return k(()=>{const{text:t="Edit this page",pattern:n=""}=s.value.editLink||{};let o;return typeof n=="function"?o=n(e.value):o=n.replace(/:path/g,e.value.filePath),{url:o,text:t}})}function Ft(){const{page:s,theme:e,frontmatter:t}=P();return k(()=>{var _,g,V,y,I,S,C,B;const n=Ne(e.value.sidebar,s.value.relativePath),o=pt(n),r=o.findIndex(w=>O(s.value.relativePath,w.link)),d=((_=e.value.docFooter)==null?void 0:_.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((g=e.value.docFooter)==null?void 0:g.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((V=o[r-1])==null?void 0:V.docFooterText)??((y=o[r-1])==null?void 0:y.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((I=o[r-1])==null?void 0:I.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((S=o[r+1])==null?void 0:S.docFooterText)??((C=o[r+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((B=o[r+1])==null?void 0:B.link)}}})}const Ot={},Gt={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Ut=c("path",{d:"M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"},null,-1),jt=c("path",{d:"M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"},null,-1),Kt=[Ut,jt];function qt(s,e){return a(),i("svg",Gt,Kt)}const Rt=m(Ot,[["render",qt]]),E=b({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=k(()=>e.tag??(e.href?"a":"span")),n=k(()=>e.href&&we.test(e.href));return(o,r)=>(a(),$(F(t.value),{class:T(["VPLink",{link:o.href,"vp-external-link-icon":n.value,"no-icon":o.noIcon}]),href:o.href?l(J)(o.href):void 0,target:o.target??(n.value?"_blank":void 0),rel:o.rel??(n.value?"noreferrer":void 0)},{default:v(()=>[u(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Wt={class:"VPLastUpdated"},Yt=["datetime"],Jt=b({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,frontmatter:n,lang:o}=P(),r=k(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),d=k(()=>r.value.toISOString()),p=M("");return G(()=>{te(()=>{var _,g,V;p.value=new Intl.DateTimeFormat((g=(_=e.value.lastUpdated)==null?void 0:_.formatOptions)!=null&&g.forceLocale?o.value:void 0,((V=e.value.lastUpdated)==null?void 0:V.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(r.value)})}),(_,g)=>{var V;return a(),i("p",Wt,[x(L(((V=l(e).lastUpdated)==null?void 0:V.text)||l(e).lastUpdatedText||"Last updated")+": ",1),c("time",{datetime:d.value},L(p.value),9,Yt)])}}});const Xt=m(Jt,[["__scopeId","data-v-19a7ae4e"]]),Zt={key:0,class:"VPDocFooter"},Qt={key:0,class:"edit-info"},es={key:0,class:"edit-link"},ts={key:1,class:"last-updated"},ss={key:1,class:"prev-next"},ns={class:"pager"},os=["href"],as=["innerHTML"],rs=["innerHTML"],ls={class:"pager"},is=["href"],cs=["innerHTML"],us=["innerHTML"],ds=b({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:n}=P(),o=Et(),r=Ft(),d=k(()=>e.value.editLink&&n.value.editLink!==!1),p=k(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),_=k(()=>d.value||p.value||r.value.prev||r.value.next);return(g,V)=>{var y,I,S,C,B,w;return _.value?(a(),i("footer",Zt,[u(g.$slots,"doc-footer-before",{},void 0,!0),d.value||p.value?(a(),i("div",Qt,[d.value?(a(),i("div",es,[h(E,{class:"edit-link-button",href:l(o).url,"no-icon":!0},{default:v(()=>[h(Rt,{class:"edit-link-icon","aria-label":"edit icon"}),x(" "+L(l(o).text),1)]),_:1},8,["href"])])):f("",!0),p.value?(a(),i("div",ts,[h(Xt)])):f("",!0)])):f("",!0),(y=l(r).prev)!=null&&y.link||(I=l(r).next)!=null&&I.link?(a(),i("nav",ss,[c("div",ns,[(S=l(r).prev)!=null&&S.link?(a(),i("a",{key:0,class:"pager-link prev",href:l(J)(l(r).prev.link)},[c("span",{class:"desc",innerHTML:((C=l(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,as),c("span",{class:"title",innerHTML:l(r).prev.text},null,8,rs)],8,os)):f("",!0)]),c("div",ls,[(B=l(r).next)!=null&&B.link?(a(),i("a",{key:0,class:"pager-link next",href:l(J)(l(r).next.link)},[c("span",{class:"desc",innerHTML:((w=l(e).docFooter)==null?void 0:w.next)||"Next page"},null,8,cs),c("span",{class:"title",innerHTML:l(r).next.text},null,8,us)],8,is)):f("",!0)])])):f("",!0)])):f("",!0)}}});const _s=m(ds,[["__scopeId","data-v-a2d931e4"]]),vs={},ps={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},hs=c("path",{d:"M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"},null,-1),fs=[hs];function ms(s,e){return a(),i("svg",ps,fs)}const fe=m(vs,[["render",ms]]),gs={key:0,class:"VPDocOutlineDropdown"},bs={key:0,class:"items"},$s=b({__name:"VPDocOutlineDropdown",setup(s){const{frontmatter:e,theme:t}=P(),n=M(!1);Y(()=>{n.value=!1});const o=_e([]);return Y(()=>{o.value=pe(e.value.outline??t.value.outline)}),(r,d)=>o.value.length>0?(a(),i("div",gs,[c("button",{onClick:d[0]||(d[0]=p=>n.value=!n.value),class:T({open:n.value})},[x(L(l(ve)(l(t)))+" ",1),h(fe,{class:"icon"})],2),n.value?(a(),i("div",bs,[h(he,{headers:o.value},null,8,["headers"])])):f("",!0)])):f("",!0)}});const ks=m($s,[["__scopeId","data-v-95bb0785"]]),ys=s=>(H("data-v-a3c25e27"),s=s(),z(),s),Ps={class:"container"},Vs=ys(()=>c("div",{class:"aside-curtain"},null,-1)),ws={class:"aside-container"},Ls={class:"aside-content"},Ss={class:"content"},Ms={class:"content-container"},Ns={class:"main"},Is=b({__name:"VPDoc",setup(s){const{theme:e}=P(),t=se(),{hasSidebar:n,hasAside:o,leftAside:r}=D(),d=k(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(p,_)=>{const g=j("Content");return a(),i("div",{class:T(["VPDoc",{"has-sidebar":l(n),"has-aside":l(o)}])},[u(p.$slots,"doc-top",{},void 0,!0),c("div",Ps,[l(o)?(a(),i("div",{key:0,class:T(["aside",{"left-aside":l(r)}])},[Vs,c("div",ws,[c("div",Ls,[h(Dt,null,{"aside-top":v(()=>[u(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[u(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[u(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),c("div",Ss,[c("div",Ms,[u(p.$slots,"doc-before",{},void 0,!0),h(ks),c("main",Ns,[h(g,{class:T(["vp-doc",[d.value,l(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),h(_s,null,{"doc-footer-before":v(()=>[u(p.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),u(p.$slots,"doc-after",{},void 0,!0)])])]),u(p.$slots,"doc-bottom",{},void 0,!0)],2)}}});const Ts=m(Is,[["__scopeId","data-v-a3c25e27"]]),Cs=b({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{}},setup(s){const e=s,t=k(()=>e.href&&we.test(e.href)),n=k(()=>e.tag||e.href?"a":"button");return(o,r)=>(a(),$(F(n.value),{class:T(["VPButton",[o.size,o.theme]]),href:o.href?l(J)(o.href):void 0,target:t.value?"_blank":void 0,rel:t.value?"noreferrer":void 0},{default:v(()=>[x(L(o.text),1)]),_:1},8,["class","href","target","rel"]))}});const Bs=m(Cs,[["__scopeId","data-v-1e76fe75"]]),As=["src","alt"],xs=b({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const n=j("VPImage",!0);return e.image?(a(),i(N,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),i("img",Z({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:l(ue)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,As)):(a(),i(N,{key:1},[h(n,Z({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),h(n,Z({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}});const ee=m(xs,[["__scopeId","data-v-ab19afbb"]]),Hs=s=>(H("data-v-5a3e9999"),s=s(),z(),s),zs={class:"container"},Ds={class:"main"},Es={key:0,class:"name"},Fs=["innerHTML"],Os=["innerHTML"],Gs=["innerHTML"],Us={key:0,class:"actions"},js={key:0,class:"image"},Ks={class:"image-container"},qs=Hs(()=>c("div",{class:"image-bg"},null,-1)),Rs=b({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=ne("hero-image-slot-exists");return(t,n)=>(a(),i("div",{class:T(["VPHero",{"has-image":t.image||l(e)}])},[c("div",zs,[c("div",Ds,[u(t.$slots,"home-hero-info",{},()=>[t.name?(a(),i("h1",Es,[c("span",{innerHTML:t.name,class:"clip"},null,8,Fs)])):f("",!0),t.text?(a(),i("p",{key:1,innerHTML:t.text,class:"text"},null,8,Os)):f("",!0),t.tagline?(a(),i("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Gs)):f("",!0)],!0),t.actions?(a(),i("div",Us,[(a(!0),i(N,null,A(t.actions,o=>(a(),i("div",{key:o.link,class:"action"},[h(Bs,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link},null,8,["theme","text","href"])]))),128))])):f("",!0)]),t.image||l(e)?(a(),i("div",js,[c("div",Ks,[qs,u(t.$slots,"home-hero-image",{},()=>[t.image?(a(),$(ee,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}});const Ws=m(Rs,[["__scopeId","data-v-5a3e9999"]]),Ys=b({__name:"VPHomeHero",setup(s){const{frontmatter:e}=P();return(t,n)=>l(e).hero?(a(),$(Ws,{key:0,class:"VPHomeHero",name:l(e).hero.name,text:l(e).hero.text,tagline:l(e).hero.tagline,image:l(e).hero.image,actions:l(e).hero.actions},{"home-hero-info":v(()=>[u(t.$slots,"home-hero-info")]),"home-hero-image":v(()=>[u(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Js={},Xs={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Zs=c("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),Qs=[Zs];function en(s,e){return a(),i("svg",Xs,Qs)}const tn=m(Js,[["render",en]]),sn={class:"box"},nn={key:0,class:"icon"},on=["innerHTML"],an=["innerHTML"],rn=["innerHTML"],ln={key:4,class:"link-text"},cn={class:"link-text-value"},un=b({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),$(E,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[c("article",sn,[typeof e.icon=="object"&&e.icon.wrap?(a(),i("div",nn,[h(ee,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),$(ee,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),i("div",{key:2,class:"icon",innerHTML:e.icon},null,8,on)):f("",!0),c("h2",{class:"title",innerHTML:e.title},null,8,an),e.details?(a(),i("p",{key:3,class:"details",innerHTML:e.details},null,8,rn)):f("",!0),e.linkText?(a(),i("div",ln,[c("p",cn,[x(L(e.linkText)+" ",1),h(tn,{class:"link-text-icon"})])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}});const dn=m(un,[["__scopeId","data-v-ee984185"]]),_n={key:0,class:"VPFeatures"},vn={class:"container"},pn={class:"items"},hn=b({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=k(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,o)=>n.features?(a(),i("div",_n,[c("div",vn,[c("div",pn,[(a(!0),i(N,null,A(n.features,r=>(a(),i("div",{key:r.title,class:T(["item",[t.value]])},[h(dn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}});const fn=m(hn,[["__scopeId","data-v-b1eea84a"]]),mn=b({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=P();return(t,n)=>l(e).features?(a(),$(fn,{key:0,class:"VPHomeFeatures",features:l(e).features},null,8,["features"])):f("",!0)}}),gn={class:"VPHome"},bn=b({__name:"VPHome",setup(s){return(e,t)=>{const n=j("Content");return a(),i("div",gn,[u(e.$slots,"home-hero-before",{},void 0,!0),h(Ys,null,{"home-hero-info":v(()=>[u(e.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(e.$slots,"home-hero-image",{},void 0,!0)]),_:3}),u(e.$slots,"home-hero-after",{},void 0,!0),u(e.$slots,"home-features-before",{},void 0,!0),h(mn),u(e.$slots,"home-features-after",{},void 0,!0),h(n)])}}});const $n=m(bn,[["__scopeId","data-v-20eabd3a"]]),kn={},yn={class:"VPPage"};function Pn(s,e){const t=j("Content");return a(),i("div",yn,[u(s.$slots,"page-top"),h(t),u(s.$slots,"page-bottom")])}const Vn=m(kn,[["render",Pn]]),wn=b({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=P(),{hasSidebar:n}=D();return(o,r)=>(a(),i("div",{class:T(["VPContent",{"has-sidebar":l(n),"is-home":l(t).layout==="home"}]),id:"VPContent"},[l(e).isNotFound?u(o.$slots,"not-found",{key:0},()=>[h(_t)],!0):l(t).layout==="page"?(a(),$(Vn,{key:1},{"page-top":v(()=>[u(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[u(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):l(t).layout==="home"?(a(),$($n,{key:2},{"home-hero-before":v(()=>[u(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[u(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[u(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[u(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):l(t).layout&&l(t).layout!=="doc"?(a(),$(F(l(t).layout),{key:3})):(a(),$(Ts,{key:4},{"doc-top":v(()=>[u(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[u(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[u(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[u(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[u(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[u(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[u(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[u(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}});const Ln=m(wn,[["__scopeId","data-v-3cf691b6"]]),Sn={class:"container"},Mn=["innerHTML"],Nn=["innerHTML"],In=b({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=P(),{hasSidebar:n}=D();return(o,r)=>l(e).footer&&l(t).footer!==!1?(a(),i("footer",{key:0,class:T(["VPFooter",{"has-sidebar":l(n)}])},[c("div",Sn,[l(e).footer.message?(a(),i("p",{key:0,class:"message",innerHTML:l(e).footer.message},null,8,Mn)):f("",!0),l(e).footer.copyright?(a(),i("p",{key:1,class:"copyright",innerHTML:l(e).footer.copyright},null,8,Nn)):f("",!0)])],2)):f("",!0)}});const Tn=m(In,[["__scopeId","data-v-e4279f1c"]]),Cn={class:"header"},Bn={class:"outline"},An=b({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=P(),n=M(!1),o=M(0),r=M();Y(()=>{n.value=!1});function d(){n.value=!n.value,o.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function p(g){g.target.classList.contains("outline-link")&&(r.value&&(r.value.style.transition="none"),Oe(()=>{n.value=!1}))}function _(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(g,V)=>(a(),i("div",{class:"VPLocalNavOutlineDropdown",style:Fe({"--vp-vh":o.value+"px"})},[g.headers.length>0?(a(),i("button",{key:0,onClick:d,class:T({open:n.value})},[x(L(l(ve)(l(t)))+" ",1),h(fe,{class:"icon"})],2)):(a(),i("button",{key:1,onClick:_},L(l(t).returnToTopLabel||"Return to top"),1)),h(ce,{name:"flyout"},{default:v(()=>[n.value?(a(),i("div",{key:0,ref_key:"items",ref:r,class:"items",onClick:p},[c("div",Cn,[c("a",{class:"top-link",href:"#",onClick:_},L(l(t).returnToTopLabel||"Return to top"),1)]),c("div",Bn,[h(he,{headers:g.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}});const xn=m(An,[["__scopeId","data-v-24251f6f"]]),Hn={},zn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Dn=c("path",{d:"M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"},null,-1),En=c("path",{d:"M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"},null,-1),Fn=c("path",{d:"M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"},null,-1),On=c("path",{d:"M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"},null,-1),Gn=[Dn,En,Fn,On];function Un(s,e){return a(),i("svg",zn,Gn)}const jn=m(Hn,[["render",Un]]),Kn=["aria-expanded"],qn={class:"menu-text"},Rn=b({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=P(),{hasSidebar:n}=D(),{y:o}=Le(),r=_e([]),d=M(0);G(()=>{d.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Y(()=>{r.value=pe(t.value.outline??e.value.outline)});const p=k(()=>r.value.length===0&&!n.value),_=k(()=>({VPLocalNav:!0,fixed:p.value,"reached-top":o.value>=d.value}));return(g,V)=>l(t).layout!=="home"&&(!p.value||l(o)>=d.value)?(a(),i("div",{key:0,class:T(_.value)},[l(n)?(a(),i("button",{key:0,class:"menu","aria-expanded":g.open,"aria-controls":"VPSidebarNav",onClick:V[0]||(V[0]=y=>g.$emit("open-menu"))},[h(jn,{class:"menu-icon"}),c("span",qn,L(l(e).sidebarMenuLabel||"Menu"),1)],8,Kn)):f("",!0),h(xn,{headers:r.value,navHeight:d.value},null,8,["headers","navHeight"])],2)):f("",!0)}});const Wn=m(Rn,[["__scopeId","data-v-9e669cc1"]]);function Yn(){const s=M(!1);function e(){s.value=!0,window.addEventListener("resize",o)}function t(){s.value=!1,window.removeEventListener("resize",o)}function n(){s.value?t():e()}function o(){window.outerWidth>=768&&t()}const r=se();return U(()=>r.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:n}}const Jn={},Xn={class:"VPSwitch",type:"button",role:"switch"},Zn={class:"check"},Qn={key:0,class:"icon"};function eo(s,e){return a(),i("button",Xn,[c("span",Zn,[s.$slots.default?(a(),i("span",Qn,[u(s.$slots,"default",{},void 0,!0)])):f("",!0)])])}const to=m(Jn,[["render",eo],["__scopeId","data-v-1c29e291"]]),so={},no={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},oo=c("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),ao=[oo];function ro(s,e){return a(),i("svg",no,ao)}const lo=m(so,[["render",ro]]),io={},co={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},uo=Ge('',9),_o=[uo];function vo(s,e){return a(),i("svg",co,_o)}const po=m(io,[["render",vo]]),ho=b({__name:"VPSwitchAppearance",setup(s){const{isDark:e}=P(),t=ne("toggle-appearance",()=>{e.value=!e.value});return(n,o)=>(a(),$(to,{title:"toggle dark mode",class:"VPSwitchAppearance","aria-checked":l(e),onClick:l(t)},{default:v(()=>[h(po,{class:"sun"}),h(lo,{class:"moon"})]),_:1},8,["aria-checked","onClick"]))}});const me=m(ho,[["__scopeId","data-v-3329432d"]]),fo={key:0,class:"VPNavBarAppearance"},mo=b({__name:"VPNavBarAppearance",setup(s){const{site:e}=P();return(t,n)=>l(e).appearance&&l(e).appearance!=="force-dark"?(a(),i("div",fo,[h(me)])):f("",!0)}});const go=m(mo,[["__scopeId","data-v-283b26e9"]]),ge=M();let Te=!1,ae=0;function bo(s){const e=M(!1);if(R){!Te&&$o(),ae++;const t=U(ge,n=>{var o,r,d;n===s.el.value||(o=s.el.value)!=null&&o.contains(n)?(e.value=!0,(r=s.onFocus)==null||r.call(s)):(e.value=!1,(d=s.onBlur)==null||d.call(s))});de(()=>{t(),ae--,ae||ko()})}return Ue(e)}function $o(){document.addEventListener("focusin",Ce),Te=!0,ge.value=document.activeElement}function ko(){document.removeEventListener("focusin",Ce)}function Ce(){ge.value=document.activeElement}const yo={},Po={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Vo=c("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),wo=[Vo];function Lo(s,e){return a(),i("svg",Po,wo)}const Be=m(yo,[["render",Lo]]),So={},Mo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},No=c("circle",{cx:"12",cy:"12",r:"2"},null,-1),Io=c("circle",{cx:"19",cy:"12",r:"2"},null,-1),To=c("circle",{cx:"5",cy:"12",r:"2"},null,-1),Co=[No,Io,To];function Bo(s,e){return a(),i("svg",Mo,Co)}const Ao=m(So,[["render",Bo]]),xo={class:"VPMenuLink"},Ho=b({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=P();return(t,n)=>(a(),i("div",xo,[h(E,{class:T({active:l(O)(l(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}});const oe=m(Ho,[["__scopeId","data-v-f51f088d"]]),zo={class:"VPMenuGroup"},Do={key:0,class:"title"},Eo=b({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),i("div",zo,[e.text?(a(),i("p",Do,L(e.text),1)):f("",!0),(a(!0),i(N,null,A(e.items,n=>(a(),i(N,null,["link"in n?(a(),$(oe,{key:0,item:n},null,8,["item"])):f("",!0)],64))),256))]))}});const Fo=m(Eo,[["__scopeId","data-v-a6b0397c"]]),Oo={class:"VPMenu"},Go={key:0,class:"items"},Uo=b({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),i("div",Oo,[e.items?(a(),i("div",Go,[(a(!0),i(N,null,A(e.items,n=>(a(),i(N,{key:n.text},["link"in n?(a(),$(oe,{key:0,item:n},null,8,["item"])):(a(),$(Fo,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0),u(e.$slots,"default",{},void 0,!0)]))}});const jo=m(Uo,[["__scopeId","data-v-e42ed9b3"]]),Ko=["aria-expanded","aria-label"],qo={key:0,class:"text"},Ro=["innerHTML"],Wo={class:"menu"},Yo=b({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=M(!1),t=M();bo({el:t,onBlur:n});function n(){e.value=!1}return(o,r)=>(a(),i("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=d=>e.value=!0),onMouseleave:r[2]||(r[2]=d=>e.value=!1)},[c("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":o.label,onClick:r[0]||(r[0]=d=>e.value=!e.value)},[o.button||o.icon?(a(),i("span",qo,[o.icon?(a(),$(F(o.icon),{key:0,class:"option-icon"})):f("",!0),o.button?(a(),i("span",{key:1,innerHTML:o.button},null,8,Ro)):f("",!0),h(Be,{class:"text-icon"})])):(a(),$(Ao,{key:1,class:"icon"}))],8,Ko),c("div",Wo,[h(jo,{items:o.items},{default:v(()=>[u(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}});const be=m(Yo,[["__scopeId","data-v-aa8de344"]]),Jo={discord:'Discord',facebook:'Facebook',github:'GitHub',instagram:'Instagram',linkedin:'LinkedIn',mastodon:'Mastodon',slack:'Slack',twitter:'Twitter',x:'X',youtube:'YouTube'},Xo=["href","aria-label","innerHTML"],Zo=b({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=k(()=>typeof e.icon=="object"?e.icon.svg:Jo[e.icon]);return(n,o)=>(a(),i("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Xo))}});const Qo=m(Zo,[["__scopeId","data-v-16cf740a"]]),ea={class:"VPSocialLinks"},ta=b({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),i("div",ea,[(a(!0),i(N,null,A(e.links,({link:n,icon:o,ariaLabel:r})=>(a(),$(Qo,{key:n,icon:o,link:n,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}});const $e=m(ta,[["__scopeId","data-v-e71e869c"]]),sa={key:0,class:"group translations"},na={class:"trans-title"},oa={key:1,class:"group"},aa={class:"item appearance"},ra={class:"label"},la={class:"appearance-action"},ia={key:2,class:"group"},ca={class:"item social-links"},ua=b({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=P(),{localeLinks:n,currentLang:o}=X({correspondingLink:!0}),r=k(()=>n.value.length&&o.value.label||e.value.appearance||t.value.socialLinks);return(d,p)=>r.value?(a(),$(be,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[l(n).length&&l(o).label?(a(),i("div",sa,[c("p",na,L(l(o).label),1),(a(!0),i(N,null,A(l(n),_=>(a(),$(oe,{key:_.link,item:_},null,8,["item"]))),128))])):f("",!0),l(e).appearance?(a(),i("div",oa,[c("div",aa,[c("p",ra,L(l(t).darkModeSwitchLabel||"Appearance"),1),c("div",la,[h(me)])])])):f("",!0),l(t).socialLinks?(a(),i("div",ia,[c("div",ca,[h($e,{class:"social-links-list",links:l(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}});const da=m(ua,[["__scopeId","data-v-c8c2ae4b"]]),_a=s=>(H("data-v-6bee1efd"),s=s(),z(),s),va=["aria-expanded"],pa=_a(()=>c("span",{class:"container"},[c("span",{class:"top"}),c("span",{class:"middle"}),c("span",{class:"bottom"})],-1)),ha=[pa],fa=b({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),i("button",{type:"button",class:T(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},ha,10,va))}});const ma=m(fa,[["__scopeId","data-v-6bee1efd"]]),ga=["innerHTML"],ba=b({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=P();return(t,n)=>(a(),$(E,{class:T({VPNavBarMenuLink:!0,active:l(O)(l(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:v(()=>[c("span",{innerHTML:t.item.text},null,8,ga)]),_:1},8,["class","href","target","rel"]))}});const $a=m(ba,[["__scopeId","data-v-cb318fec"]]),ka=b({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=P(),n=r=>"link"in r?O(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(n),o=k(()=>n(e.item));return(r,d)=>(a(),$(be,{class:T({VPNavBarMenuGroup:!0,active:l(O)(l(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||o.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),ya=s=>(H("data-v-f732b5d0"),s=s(),z(),s),Pa={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Va=ya(()=>c("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),wa=b({__name:"VPNavBarMenu",setup(s){const{theme:e}=P();return(t,n)=>l(e).nav?(a(),i("nav",Pa,[Va,(a(!0),i(N,null,A(l(e).nav,o=>(a(),i(N,{key:o.text},["link"in o?(a(),$($a,{key:0,item:o},null,8,["item"])):(a(),$(ka,{key:1,item:o},null,8,["item"]))],64))),128))])):f("",!0)}});const La=m(wa,[["__scopeId","data-v-f732b5d0"]]);function Sa(s,e){const{localeIndex:t}=P();function n(o){var S,C;const r=o.split("."),d=s&&typeof s=="object",p=d&&((C=(S=s.locales)==null?void 0:S[t.value])==null?void 0:C.translations)||null,_=d&&s.translations||null;let g=p,V=_,y=e;const I=r.pop();for(const B of r){let w=null;const K=y==null?void 0:y[B];K&&(w=y=K);const W=V==null?void 0:V[B];W&&(w=V=W);const q=g==null?void 0:g[B];q&&(w=g=q),K||(y=w),W||(V=w),q||(g=w)}return(g==null?void 0:g[I])??(V==null?void 0:V[I])??(y==null?void 0:y[I])??""}return n}const Ma=["aria-label"],Na={class:"DocSearch-Button-Container"},Ia=c("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[c("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),Ta={class:"DocSearch-Button-Placeholder"},Ca=c("span",{class:"DocSearch-Button-Keys"},[c("kbd",{class:"DocSearch-Button-Key"}),c("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Pe=b({__name:"VPNavBarSearchButton",setup(s){var o;const{theme:e}=P(),t={button:{buttonText:"Search",buttonAriaLabel:"Search"}},n=Sa((o=e.value.search)==null?void 0:o.options,t);return(r,d)=>(a(),i("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":l(n)("button.buttonAriaLabel")},[c("span",Na,[Ia,c("span",Ta,L(l(n)("button.buttonText")),1)]),Ca],8,Ma))}});const Ba={class:"VPNavBarSearch"},Aa={id:"local-search"},xa={key:1,id:"docsearch"},Ha=b({__name:"VPNavBarSearch",setup(s){const e=je(()=>Ke(()=>import("./VPLocalSearchBox.4361d669.js"),["assets/chunks/VPLocalSearchBox.4361d669.js","assets/chunks/framework.b8722102.js"])),t=()=>null,{theme:n}=P(),o=M(!1),r=M(!1);G(()=>{});function d(){o.value||(o.value=!0,setTimeout(p,16))}function p(){const y=new Event("keydown");y.key="k",y.metaKey=!0,window.dispatchEvent(y),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||p()},16)}function _(y){const I=y.target,S=I.tagName;return I.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const g=M(!1);ke("k",y=>{(y.ctrlKey||y.metaKey)&&(y.preventDefault(),g.value=!0)}),ke("/",y=>{_(y)||(y.preventDefault(),g.value=!0)});const V="local";return(y,I)=>{var S;return a(),i("div",Ba,[l(V)==="local"?(a(),i(N,{key:0},[g.value?(a(),$(l(e),{key:0,onClose:I[0]||(I[0]=C=>g.value=!1)})):f("",!0),c("div",Aa,[h(Pe,{onClick:I[1]||(I[1]=C=>g.value=!0)})])],64)):l(V)==="algolia"?(a(),i(N,{key:1},[o.value?(a(),$(l(t),{key:0,algolia:((S=l(n).search)==null?void 0:S.options)??l(n).algolia,onVnodeBeforeMount:I[2]||(I[2]=C=>r.value=!0)},null,8,["algolia"])):f("",!0),r.value?f("",!0):(a(),i("div",xa,[h(Pe,{onClick:d})]))],64)):f("",!0)])}}});const za=b({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=P();return(t,n)=>l(e).socialLinks?(a(),$($e,{key:0,class:"VPNavBarSocialLinks",links:l(e).socialLinks},null,8,["links"])):f("",!0)}});const Da=m(za,[["__scopeId","data-v-ef6192dc"]]),Ea=["href"],Fa=b({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=P(),{hasSidebar:n}=D(),{currentLang:o}=X();return(r,d)=>(a(),i("div",{class:T(["VPNavBarTitle",{"has-sidebar":l(n)}])},[c("a",{class:"title",href:l(t).logoLink??l(J)(l(o).link)},[u(r.$slots,"nav-bar-title-before",{},void 0,!0),l(t).logo?(a(),$(ee,{key:0,class:"logo",image:l(t).logo},null,8,["image"])):f("",!0),l(t).siteTitle?(a(),i(N,{key:1},[x(L(l(t).siteTitle),1)],64)):l(t).siteTitle===void 0?(a(),i(N,{key:2},[x(L(l(e).title),1)],64)):f("",!0),u(r.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ea)],2))}});const Oa=m(Fa,[["__scopeId","data-v-2973dbb4"]]),Ga={},Ua={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ja=c("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),Ka=c("path",{d:" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z ",class:"css-c4d79v"},null,-1),qa=[ja,Ka];function Ra(s,e){return a(),i("svg",Ua,qa)}const Ae=m(Ga,[["render",Ra]]),Wa={class:"items"},Ya={class:"title"},Ja=b({__name:"VPNavBarTranslations",setup(s){const{theme:e}=P(),{localeLinks:t,currentLang:n}=X({correspondingLink:!0});return(o,r)=>l(t).length&&l(n).label?(a(),$(be,{key:0,class:"VPNavBarTranslations",icon:Ae,label:l(e).langMenuLabel||"Change language"},{default:v(()=>[c("div",Wa,[c("p",Ya,L(l(n).label),1),(a(!0),i(N,null,A(l(t),d=>(a(),$(oe,{key:d.link,item:d},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}});const Xa=m(Ja,[["__scopeId","data-v-ff4524ae"]]),Za=s=>(H("data-v-f1abbc6e"),s=s(),z(),s),Qa={class:"container"},er={class:"title"},tr={class:"content"},sr=Za(()=>c("div",{class:"curtain"},null,-1)),nr={class:"content-body"},or=b({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const{y:e}=Le(),{hasSidebar:t}=D(),{frontmatter:n}=P(),o=M({});return Ve(()=>{o.value={"has-sidebar":t.value,top:n.value.layout==="home"&&e.value===0}}),(r,d)=>(a(),i("div",{class:T(["VPNavBar",o.value])},[c("div",Qa,[c("div",er,[h(Oa,null,{"nav-bar-title-before":v(()=>[u(r.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(r.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),c("div",tr,[sr,c("div",nr,[u(r.$slots,"nav-bar-content-before",{},void 0,!0),h(Ha,{class:"search"}),h(La,{class:"menu"}),h(Xa,{class:"translations"}),h(go,{class:"appearance"}),h(Da,{class:"social-links"}),h(da,{class:"extra"}),u(r.$slots,"nav-bar-content-after",{},void 0,!0),h(ma,{class:"hamburger",active:r.isScreenOpen,onClick:d[0]||(d[0]=p=>r.$emit("toggle-screen"))},null,8,["active"])])])])],2))}});const ar=m(or,[["__scopeId","data-v-f1abbc6e"]]),rr={key:0,class:"VPNavScreenAppearance"},lr={class:"text"},ir=b({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=P();return(n,o)=>l(e).appearance?(a(),i("div",rr,[c("p",lr,L(l(t).darkModeSwitchLabel||"Appearance"),1),h(me)])):f("",!0)}});const cr=m(ir,[["__scopeId","data-v-0dc5cf49"]]),ur=b({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=ne("close-screen");return(t,n)=>(a(),$(E,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:l(e)},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const dr=m(ur,[["__scopeId","data-v-fe523e3d"]]),_r={},vr={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},pr=c("path",{d:"M18.9,10.9h-6v-6c0-0.6-0.4-1-1-1s-1,0.4-1,1v6h-6c-0.6,0-1,0.4-1,1s0.4,1,1,1h6v6c0,0.6,0.4,1,1,1s1-0.4,1-1v-6h6c0.6,0,1-0.4,1-1S19.5,10.9,18.9,10.9z"},null,-1),hr=[pr];function fr(s,e){return a(),i("svg",vr,hr)}const mr=m(_r,[["render",fr]]),gr=b({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=ne("close-screen");return(t,n)=>(a(),$(E,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:l(e)},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const xe=m(gr,[["__scopeId","data-v-aea78dd1"]]),br={class:"VPNavScreenMenuGroupSection"},$r={key:0,class:"title"},kr=b({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),i("div",br,[e.text?(a(),i("p",$r,L(e.text),1)):f("",!0),(a(!0),i(N,null,A(e.items,n=>(a(),$(xe,{key:n.text,item:n},null,8,["item"]))),128))]))}});const yr=m(kr,[["__scopeId","data-v-f60dbfa7"]]),Pr=["aria-controls","aria-expanded"],Vr={class:"button-text"},wr=["id"],Lr={key:1,class:"group"},Sr=b({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=M(!1),n=k(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function o(){t.value=!t.value}return(r,d)=>(a(),i("div",{class:T(["VPNavScreenMenuGroup",{open:t.value}])},[c("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:o},[c("span",Vr,L(r.text),1),h(mr,{class:"button-icon"})],8,Pr),c("div",{id:n.value,class:"items"},[(a(!0),i(N,null,A(r.items,p=>(a(),i(N,{key:p.text},["link"in p?(a(),i("div",{key:p.text,class:"item"},[h(xe,{item:p},null,8,["item"])])):(a(),i("div",Lr,[h(yr,{text:p.text,items:p.items},null,8,["text","items"])]))],64))),128))],8,wr)],2))}});const Mr=m(Sr,[["__scopeId","data-v-c2c554ed"]]),Nr={key:0,class:"VPNavScreenMenu"},Ir=b({__name:"VPNavScreenMenu",setup(s){const{theme:e}=P();return(t,n)=>l(e).nav?(a(),i("nav",Nr,[(a(!0),i(N,null,A(l(e).nav,o=>(a(),i(N,{key:o.text},["link"in o?(a(),$(dr,{key:0,item:o},null,8,["item"])):(a(),$(Mr,{key:1,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Tr=b({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=P();return(t,n)=>l(e).socialLinks?(a(),$($e,{key:0,class:"VPNavScreenSocialLinks",links:l(e).socialLinks},null,8,["links"])):f("",!0)}}),Cr={class:"list"},Br=b({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=X({correspondingLink:!0}),n=M(!1);function o(){n.value=!n.value}return(r,d)=>l(e).length&&l(t).label?(a(),i("div",{key:0,class:T(["VPNavScreenTranslations",{open:n.value}])},[c("button",{class:"title",onClick:o},[h(Ae,{class:"icon lang"}),x(" "+L(l(t).label)+" ",1),h(Be,{class:"icon chevron"})]),c("ul",Cr,[(a(!0),i(N,null,A(l(e),p=>(a(),i("li",{key:p.link,class:"item"},[h(E,{class:"link",href:p.link},{default:v(()=>[x(L(p.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}});const Ar=m(Br,[["__scopeId","data-v-41505286"]]),xr={class:"container"},Hr=b({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=M(null),t=Se(R?document.body:null);return(n,o)=>(a(),$(ce,{name:"fade",onEnter:o[0]||(o[0]=r=>t.value=!0),onAfterLeave:o[1]||(o[1]=r=>t.value=!1)},{default:v(()=>[n.open?(a(),i("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[c("div",xr,[u(n.$slots,"nav-screen-content-before",{},void 0,!0),h(Ir,{class:"menu"}),h(Ar,{class:"translations"}),h(cr,{class:"appearance"}),h(Tr,{class:"social-links"}),u(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}});const zr=m(Hr,[["__scopeId","data-v-57cce842"]]),Dr={key:0,class:"VPNav"},Er=b({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=Yn(),{frontmatter:o}=P(),r=k(()=>o.value.navbar!==!1);return Me("close-screen",t),te(()=>{R&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(d,p)=>r.value?(a(),i("header",Dr,[h(ar,{"is-screen-open":l(e),onToggleScreen:l(n)},{"nav-bar-title-before":v(()=>[u(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[u(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[u(d.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),h(zr,{open:l(e)},{"nav-screen-content-before":v(()=>[u(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[u(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}});const Fr=m(Er,[["__scopeId","data-v-7ad780c2"]]),Or=s=>(H("data-v-bd01e0d5"),s=s(),z(),s),Gr=["role","tabindex"],Ur=Or(()=>c("div",{class:"indicator"},null,-1)),jr=["onKeydown"],Kr={key:1,class:"items"},qr=b({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:n,isLink:o,isActiveLink:r,hasActiveLink:d,hasChildren:p,toggle:_}=ft(k(()=>e.item)),g=k(()=>p.value?"section":"div"),V=k(()=>o.value?"a":"div"),y=k(()=>p.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),I=k(()=>o.value?void 0:"button"),S=k(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":o.value},{"is-active":r.value},{"has-active":d.value}]);function C(w){"key"in w&&w.key!=="Enter"||!e.item.link&&_()}function B(){e.item.link&&_()}return(w,K)=>{const W=j("VPSidebarItem",!0);return a(),$(F(g.value),{class:T(["VPSidebarItem",S.value])},{default:v(()=>[w.item.text?(a(),i("div",Z({key:0,class:"item",role:I.value},Re(w.item.items?{click:C,keydown:C}:{},!0),{tabindex:w.item.items&&0}),[Ur,w.item.link?(a(),$(E,{key:0,tag:V.value,class:"link",href:w.item.link,rel:w.item.rel,target:w.item.target},{default:v(()=>[(a(),$(F(y.value),{class:"text",innerHTML:w.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),$(F(y.value),{key:1,class:"text",innerHTML:w.item.text},null,8,["innerHTML"])),w.item.collapsed!=null?(a(),i("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:B,onKeydown:qe(B,["enter"]),tabindex:"0"},[h(fe,{class:"caret-icon"})],40,jr)):f("",!0)],16,Gr)):f("",!0),w.item.items&&w.item.items.length?(a(),i("div",Kr,[w.depth<5?(a(!0),i(N,{key:0},A(w.item.items,q=>(a(),$(W,{key:q.text,item:q,depth:w.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}});const Rr=m(qr,[["__scopeId","data-v-bd01e0d5"]]),He=s=>(H("data-v-ee2efba5"),s=s(),z(),s),Wr=He(()=>c("div",{class:"curtain"},null,-1)),Yr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Jr=He(()=>c("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),Xr=b({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const e=s,{sidebarGroups:t,hasSidebar:n}=D(),o=M(null),r=Se(R?document.body:null);return U([e,o],()=>{var d;e.open?(r.value=!0,(d=o.value)==null||d.focus()):r.value=!1},{immediate:!0,flush:"post"}),(d,p)=>l(n)?(a(),i("aside",{key:0,class:T(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:o,onClick:p[0]||(p[0]=We(()=>{},["stop"]))},[Wr,c("nav",Yr,[Jr,u(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),i(N,null,A(l(t),_=>(a(),i("div",{key:_.text,class:"group"},[h(Rr,{item:_,depth:0},null,8,["item"])]))),128)),u(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}});const Zr=m(Xr,[["__scopeId","data-v-ee2efba5"]]),Qr=b({__name:"VPSkipLink",setup(s){const e=se(),t=M();U(()=>e.path,()=>t.value.focus());function n({target:o}){const r=document.getElementById(decodeURIComponent(o.hash).slice(1));if(r){const d=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",d)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",d),r.focus(),window.scrollTo(0,0)}}return(o,r)=>(a(),i(N,null,[c("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),c("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}});const el=m(Qr,[["__scopeId","data-v-c8291ffa"]]),tl=b({__name:"Layout",setup(s){const{isOpen:e,open:t,close:n}=D(),o=se();U(()=>o.path,n),ht(e,n);const{frontmatter:r}=P(),d=Ye(),p=k(()=>!!d["home-hero-image"]);return Me("hero-image-slot-exists",p),(_,g)=>{const V=j("Content");return l(r).layout!==!1?(a(),i("div",{key:0,class:T(["Layout",l(r).pageClass])},[u(_.$slots,"layout-top",{},void 0,!0),h(el),h(et,{class:"backdrop",show:l(e),onClick:l(n)},null,8,["show","onClick"]),h(Fr,null,{"nav-bar-title-before":v(()=>[u(_.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(_.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[u(_.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[u(_.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[u(_.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[u(_.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),h(Wn,{open:l(e),onOpenMenu:l(t)},null,8,["open","onOpenMenu"]),h(Zr,{open:l(e)},{"sidebar-nav-before":v(()=>[u(_.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[u(_.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),h(Ln,null,{"page-top":v(()=>[u(_.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[u(_.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[u(_.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[u(_.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(_.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(_.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[u(_.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[u(_.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[u(_.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[u(_.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[u(_.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[u(_.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[u(_.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[u(_.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[u(_.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[u(_.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[u(_.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(_.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(_.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(_.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),h(Tn),u(_.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),$(V,{key:1}))}}});const sl=m(tl,[["__scopeId","data-v-9d8abc1e"]]);const ol={Layout:sl,enhanceApp:({app:s})=>{s.component("Badge",Xe)}};export{Sa as c,ol as t,P as u}; +import{d as b,o as a,c as i,r as u,n as T,a as x,t as L,_ as m,b as $,w as v,T as ce,e as f,u as ze,i as De,f as ue,g as k,h as M,j as G,k as c,l,p as H,m as z,q as O,s as R,v as re,x as U,y as te,z as de,A as Ve,B as Ee,C as j,F as N,D as A,E as _e,G as Y,H as h,I as F,J as we,K as se,L as Z,M as ne,N as Fe,O as Oe,P as Le,Q as Ge,R as Ue,S as ke,U as je,V as Ke,W as Se,X as Me,Y as qe,Z as Re,$ as We,a0 as Ye}from"./framework.b8722102.js";const Je=b({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),i("span",{class:T(["VPBadge",e.type])},[u(e.$slots,"default",{},()=>[x(L(e.text),1)],!0)],2))}});const Xe=m(Je,[["__scopeId","data-v-ea5b2908"]]),Ze={key:0,class:"VPBackdrop"},Qe=b({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),$(ce,{name:"fade"},{default:v(()=>[e.show?(a(),i("div",Ze)):f("",!0)]),_:1}))}});const et=m(Qe,[["__scopeId","data-v-54a304ca"]]),P=ze;function tt(s,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(s,e):(s(),(n=!0)&&setTimeout(()=>n=!1,e))}}function le(s){return/^\//.test(s)?s:`/${s}`}function J(s){if(De(s))return s;const{site:e}=P(),{pathname:t,search:n,hash:o}=new URL(s,"http://a.com"),r=t.endsWith("/")||t.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,e.value.cleanUrls?"":".html")}${n}${o}`);return ue(r)}function X({removeCurrent:s=!0,correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:o,theme:r}=P(),d=k(()=>{var _,g;return{label:(_=t.value.locales[n.value])==null?void 0:_.label,link:((g=t.value.locales[n.value])==null?void 0:g.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:k(()=>Object.entries(t.value.locales).flatMap(([_,g])=>s&&d.value.label===g.label?[]:{text:g.label,link:st(g.link||(_==="root"?"/":`/${_}/`),r.value.i18nRouting!==!1&&e,o.value.relativePath.slice(d.value.link.length-1),!t.value.cleanUrls)})),currentLang:d}}function st(s,e,t,n){return e?s.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):s}const nt=s=>(H("data-v-b9c0c15a"),s=s(),z(),s),ot={class:"NotFound"},at={class:"code"},rt={class:"title"},lt=nt(()=>c("div",{class:"divider"},null,-1)),it={class:"quote"},ct={class:"action"},ut=["href","aria-label"],dt=b({__name:"NotFound",setup(s){const{site:e,theme:t}=P(),{localeLinks:n}=X({removeCurrent:!1}),o=M("/");return G(()=>{var d;const r=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");n.value.length&&(o.value=((d=n.value.find(({link:p})=>p.startsWith(r)))==null?void 0:d.link)||n.value[0].link)}),(r,d)=>{var p,_,g,V,y;return a(),i("div",ot,[c("p",at,L(((p=l(t).notFound)==null?void 0:p.code)??"404"),1),c("h1",rt,L(((_=l(t).notFound)==null?void 0:_.title)??"PAGE NOT FOUND"),1),lt,c("blockquote",it,L(((g=l(t).notFound)==null?void 0:g.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),c("div",ct,[c("a",{class:"link",href:l(ue)(o.value),"aria-label":((V=l(t).notFound)==null?void 0:V.linkLabel)??"go to home"},L(((y=l(t).notFound)==null?void 0:y.linkText)??"Take me home"),9,ut)])])}}});const _t=m(dt,[["__scopeId","data-v-b9c0c15a"]]);function Ne(s,e){if(Array.isArray(s))return Q(s);if(s==null)return[];e=le(e);const t=Object.keys(s).sort((o,r)=>r.split("/").length-o.split("/").length).find(o=>e.startsWith(le(o))),n=t?s[t]:[];return Array.isArray(n)?Q(n):Q(n.items,n.base)}function vt(s){const e=[];let t=0;for(const n in s){const o=s[n];if(o.items){t=e.push(o);continue}e[t]||e.push({items:[]}),e[t].items.push(o)}return e}function pt(s){const e=[];function t(n){for(const o of n)o.text&&o.link&&e.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&t(o.items)}return t(s),e}function ie(s,e){return Array.isArray(e)?e.some(t=>ie(s,t)):O(s,e.link)?!0:e.items?ie(s,e.items):!1}function Q(s,e){return[...s].map(t=>{const n={...t},o=n.base||e;return o&&n.link&&(n.link=o+n.link),n.items&&(n.items=Q(n.items,o)),n})}function D(){const{frontmatter:s,page:e,theme:t}=P(),n=re("(min-width: 960px)"),o=M(!1),r=k(()=>{const B=t.value.sidebar,w=e.value.relativePath;return B?Ne(B,w):[]}),d=M(r.value);U(r,(B,w)=>{JSON.stringify(B)!==JSON.stringify(w)&&(d.value=r.value)});const p=k(()=>s.value.sidebar!==!1&&d.value.length>0&&s.value.layout!=="home"),_=k(()=>g?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),g=k(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),V=k(()=>p.value&&n.value),y=k(()=>p.value?vt(d.value):[]);function I(){o.value=!0}function S(){o.value=!1}function C(){o.value?S():I()}return{isOpen:o,sidebar:d,sidebarGroups:y,hasSidebar:p,hasAside:g,leftAside:_,isSidebarEnabled:V,open:I,close:S,toggle:C}}function ht(s,e){let t;te(()=>{t=s.value?document.activeElement:void 0}),G(()=>{window.addEventListener("keyup",n)}),de(()=>{window.removeEventListener("keyup",n)});function n(o){o.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}const Ie=M(R?location.hash:"");R&&window.addEventListener("hashchange",()=>{Ie.value=location.hash});function ft(s){const{page:e}=P(),t=M(!1),n=k(()=>s.value.collapsed!=null),o=k(()=>!!s.value.link),r=M(!1),d=()=>{r.value=O(e.value.relativePath,s.value.link)};U([e,s,Ie],d),G(d);const p=k(()=>r.value?!0:s.value.items?ie(e.value.relativePath,s.value.items):!1),_=k(()=>!!(s.value.items&&s.value.items.length));te(()=>{t.value=!!(n.value&&s.value.collapsed)}),Ve(()=>{(r.value||p.value)&&(t.value=!1)});function g(){n.value&&(t.value=!t.value)}return{collapsed:t,collapsible:n,isLink:o,isActiveLink:r,hasActiveLink:p,hasChildren:_,toggle:g}}function mt(){const{hasSidebar:s}=D(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:k(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const gt=71;function ve(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function pe(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{title:bt(t),link:"#"+t.id,level:n}});return $t(e,s)}function bt(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function $t(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,o]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;s=s.filter(d=>d.level>=n&&d.level<=o);const r=[];e:for(let d=0;d=0;_--){const g=s[_];if(g.level{requestAnimationFrame(r),window.addEventListener("scroll",n)}),Ee(()=>{d(location.hash)}),de(()=>{window.removeEventListener("scroll",n)});function r(){if(!t.value)return;const p=[].slice.call(s.value.querySelectorAll(".outline-link")),_=[].slice.call(document.querySelectorAll(".content .header-anchor")).filter(S=>p.some(C=>C.hash===S.hash&&S.offsetParent!==null)),g=window.scrollY,V=window.innerHeight,y=document.body.offsetHeight,I=Math.abs(g+V-y)<1;if(_.length&&I){d(_[_.length-1].hash);return}for(let S=0;S<_.length;S++){const C=_[S],B=_[S+1],[w,K]=yt(S,C,B);if(w){d(K);return}}}function d(p){o&&o.classList.remove("active"),p==null?o=null:o=s.value.querySelector(`a[href="${decodeURIComponent(p)}"]`);const _=o;_?(_.classList.add("active"),e.value.style.top=_.offsetTop+33+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function ye(s){return s.parentElement.offsetTop-gt}function yt(s,e,t){const n=window.scrollY;return s===0&&n===0?[!0,null]:n{const o=j("VPDocOutlineItem",!0);return a(),i("ul",{class:T(t.root?"root":"nested")},[(a(!0),i(N,null,A(t.headers,({children:r,link:d,title:p})=>(a(),i("li",null,[c("a",{class:"outline-link",href:d,onClick:e,title:p},L(p),9,Pt),r!=null&&r.length?(a(),$(o,{key:0,headers:r},null,8,["headers"])):f("",!0)]))),256))],2)}}});const he=m(Vt,[["__scopeId","data-v-463da30f"]]),wt=s=>(H("data-v-3a6c4994"),s=s(),z(),s),Lt={class:"content"},St={class:"outline-title",role:"heading","aria-level":"2"},Mt={"aria-labelledby":"doc-outline-aria-label"},Nt=wt(()=>c("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),It=b({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=P(),n=_e([]);Y(()=>{n.value=pe(e.value.outline??t.value.outline)});const o=M(),r=M();return kt(o,r),(d,p)=>(a(),i("div",{class:T(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:o,role:"navigation"},[c("div",Lt,[c("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),c("div",St,L(l(ve)(l(t))),1),c("nav",Mt,[Nt,h(he,{headers:n.value,root:!0},null,8,["headers"])])])],2))}});const Tt=m(It,[["__scopeId","data-v-3a6c4994"]]),Ct={class:"VPDocAsideCarbonAds"},Bt=b({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,n)=>(a(),i("div",Ct,[h(l(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),At=s=>(H("data-v-cb998dce"),s=s(),z(),s),xt={class:"VPDocAside"},Ht=At(()=>c("div",{class:"spacer"},null,-1)),zt=b({__name:"VPDocAside",setup(s){const{theme:e}=P();return(t,n)=>(a(),i("div",xt,[u(t.$slots,"aside-top",{},void 0,!0),u(t.$slots,"aside-outline-before",{},void 0,!0),h(Tt),u(t.$slots,"aside-outline-after",{},void 0,!0),Ht,u(t.$slots,"aside-ads-before",{},void 0,!0),l(e).carbonAds?(a(),$(Bt,{key:0,"carbon-ads":l(e).carbonAds},null,8,["carbon-ads"])):f("",!0),u(t.$slots,"aside-ads-after",{},void 0,!0),u(t.$slots,"aside-bottom",{},void 0,!0)]))}});const Dt=m(zt,[["__scopeId","data-v-cb998dce"]]);function Et(){const{theme:s,page:e}=P();return k(()=>{const{text:t="Edit this page",pattern:n=""}=s.value.editLink||{};let o;return typeof n=="function"?o=n(e.value):o=n.replace(/:path/g,e.value.filePath),{url:o,text:t}})}function Ft(){const{page:s,theme:e,frontmatter:t}=P();return k(()=>{var _,g,V,y,I,S,C,B;const n=Ne(e.value.sidebar,s.value.relativePath),o=pt(n),r=o.findIndex(w=>O(s.value.relativePath,w.link)),d=((_=e.value.docFooter)==null?void 0:_.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((g=e.value.docFooter)==null?void 0:g.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((V=o[r-1])==null?void 0:V.docFooterText)??((y=o[r-1])==null?void 0:y.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((I=o[r-1])==null?void 0:I.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((S=o[r+1])==null?void 0:S.docFooterText)??((C=o[r+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((B=o[r+1])==null?void 0:B.link)}}})}const Ot={},Gt={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Ut=c("path",{d:"M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"},null,-1),jt=c("path",{d:"M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"},null,-1),Kt=[Ut,jt];function qt(s,e){return a(),i("svg",Gt,Kt)}const Rt=m(Ot,[["render",qt]]),E=b({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=k(()=>e.tag??(e.href?"a":"span")),n=k(()=>e.href&&we.test(e.href));return(o,r)=>(a(),$(F(t.value),{class:T(["VPLink",{link:o.href,"vp-external-link-icon":n.value,"no-icon":o.noIcon}]),href:o.href?l(J)(o.href):void 0,target:o.target??(n.value?"_blank":void 0),rel:o.rel??(n.value?"noreferrer":void 0)},{default:v(()=>[u(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Wt={class:"VPLastUpdated"},Yt=["datetime"],Jt=b({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,frontmatter:n,lang:o}=P(),r=k(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),d=k(()=>r.value.toISOString()),p=M("");return G(()=>{te(()=>{var _,g,V;p.value=new Intl.DateTimeFormat((g=(_=e.value.lastUpdated)==null?void 0:_.formatOptions)!=null&&g.forceLocale?o.value:void 0,((V=e.value.lastUpdated)==null?void 0:V.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(r.value)})}),(_,g)=>{var V;return a(),i("p",Wt,[x(L(((V=l(e).lastUpdated)==null?void 0:V.text)||l(e).lastUpdatedText||"Last updated")+": ",1),c("time",{datetime:d.value},L(p.value),9,Yt)])}}});const Xt=m(Jt,[["__scopeId","data-v-19a7ae4e"]]),Zt={key:0,class:"VPDocFooter"},Qt={key:0,class:"edit-info"},es={key:0,class:"edit-link"},ts={key:1,class:"last-updated"},ss={key:1,class:"prev-next"},ns={class:"pager"},os=["href"],as=["innerHTML"],rs=["innerHTML"],ls={class:"pager"},is=["href"],cs=["innerHTML"],us=["innerHTML"],ds=b({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:n}=P(),o=Et(),r=Ft(),d=k(()=>e.value.editLink&&n.value.editLink!==!1),p=k(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),_=k(()=>d.value||p.value||r.value.prev||r.value.next);return(g,V)=>{var y,I,S,C,B,w;return _.value?(a(),i("footer",Zt,[u(g.$slots,"doc-footer-before",{},void 0,!0),d.value||p.value?(a(),i("div",Qt,[d.value?(a(),i("div",es,[h(E,{class:"edit-link-button",href:l(o).url,"no-icon":!0},{default:v(()=>[h(Rt,{class:"edit-link-icon","aria-label":"edit icon"}),x(" "+L(l(o).text),1)]),_:1},8,["href"])])):f("",!0),p.value?(a(),i("div",ts,[h(Xt)])):f("",!0)])):f("",!0),(y=l(r).prev)!=null&&y.link||(I=l(r).next)!=null&&I.link?(a(),i("nav",ss,[c("div",ns,[(S=l(r).prev)!=null&&S.link?(a(),i("a",{key:0,class:"pager-link prev",href:l(J)(l(r).prev.link)},[c("span",{class:"desc",innerHTML:((C=l(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,as),c("span",{class:"title",innerHTML:l(r).prev.text},null,8,rs)],8,os)):f("",!0)]),c("div",ls,[(B=l(r).next)!=null&&B.link?(a(),i("a",{key:0,class:"pager-link next",href:l(J)(l(r).next.link)},[c("span",{class:"desc",innerHTML:((w=l(e).docFooter)==null?void 0:w.next)||"Next page"},null,8,cs),c("span",{class:"title",innerHTML:l(r).next.text},null,8,us)],8,is)):f("",!0)])])):f("",!0)])):f("",!0)}}});const _s=m(ds,[["__scopeId","data-v-a2d931e4"]]),vs={},ps={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},hs=c("path",{d:"M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"},null,-1),fs=[hs];function ms(s,e){return a(),i("svg",ps,fs)}const fe=m(vs,[["render",ms]]),gs={key:0,class:"VPDocOutlineDropdown"},bs={key:0,class:"items"},$s=b({__name:"VPDocOutlineDropdown",setup(s){const{frontmatter:e,theme:t}=P(),n=M(!1);Y(()=>{n.value=!1});const o=_e([]);return Y(()=>{o.value=pe(e.value.outline??t.value.outline)}),(r,d)=>o.value.length>0?(a(),i("div",gs,[c("button",{onClick:d[0]||(d[0]=p=>n.value=!n.value),class:T({open:n.value})},[x(L(l(ve)(l(t)))+" ",1),h(fe,{class:"icon"})],2),n.value?(a(),i("div",bs,[h(he,{headers:o.value},null,8,["headers"])])):f("",!0)])):f("",!0)}});const ks=m($s,[["__scopeId","data-v-95bb0785"]]),ys=s=>(H("data-v-a3c25e27"),s=s(),z(),s),Ps={class:"container"},Vs=ys(()=>c("div",{class:"aside-curtain"},null,-1)),ws={class:"aside-container"},Ls={class:"aside-content"},Ss={class:"content"},Ms={class:"content-container"},Ns={class:"main"},Is=b({__name:"VPDoc",setup(s){const{theme:e}=P(),t=se(),{hasSidebar:n,hasAside:o,leftAside:r}=D(),d=k(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(p,_)=>{const g=j("Content");return a(),i("div",{class:T(["VPDoc",{"has-sidebar":l(n),"has-aside":l(o)}])},[u(p.$slots,"doc-top",{},void 0,!0),c("div",Ps,[l(o)?(a(),i("div",{key:0,class:T(["aside",{"left-aside":l(r)}])},[Vs,c("div",ws,[c("div",Ls,[h(Dt,null,{"aside-top":v(()=>[u(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[u(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[u(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),c("div",Ss,[c("div",Ms,[u(p.$slots,"doc-before",{},void 0,!0),h(ks),c("main",Ns,[h(g,{class:T(["vp-doc",[d.value,l(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),h(_s,null,{"doc-footer-before":v(()=>[u(p.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),u(p.$slots,"doc-after",{},void 0,!0)])])]),u(p.$slots,"doc-bottom",{},void 0,!0)],2)}}});const Ts=m(Is,[["__scopeId","data-v-a3c25e27"]]),Cs=b({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{}},setup(s){const e=s,t=k(()=>e.href&&we.test(e.href)),n=k(()=>e.tag||e.href?"a":"button");return(o,r)=>(a(),$(F(n.value),{class:T(["VPButton",[o.size,o.theme]]),href:o.href?l(J)(o.href):void 0,target:t.value?"_blank":void 0,rel:t.value?"noreferrer":void 0},{default:v(()=>[x(L(o.text),1)]),_:1},8,["class","href","target","rel"]))}});const Bs=m(Cs,[["__scopeId","data-v-1e76fe75"]]),As=["src","alt"],xs=b({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const n=j("VPImage",!0);return e.image?(a(),i(N,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),i("img",Z({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:l(ue)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,As)):(a(),i(N,{key:1},[h(n,Z({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),h(n,Z({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}});const ee=m(xs,[["__scopeId","data-v-ab19afbb"]]),Hs=s=>(H("data-v-5a3e9999"),s=s(),z(),s),zs={class:"container"},Ds={class:"main"},Es={key:0,class:"name"},Fs=["innerHTML"],Os=["innerHTML"],Gs=["innerHTML"],Us={key:0,class:"actions"},js={key:0,class:"image"},Ks={class:"image-container"},qs=Hs(()=>c("div",{class:"image-bg"},null,-1)),Rs=b({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=ne("hero-image-slot-exists");return(t,n)=>(a(),i("div",{class:T(["VPHero",{"has-image":t.image||l(e)}])},[c("div",zs,[c("div",Ds,[u(t.$slots,"home-hero-info",{},()=>[t.name?(a(),i("h1",Es,[c("span",{innerHTML:t.name,class:"clip"},null,8,Fs)])):f("",!0),t.text?(a(),i("p",{key:1,innerHTML:t.text,class:"text"},null,8,Os)):f("",!0),t.tagline?(a(),i("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Gs)):f("",!0)],!0),t.actions?(a(),i("div",Us,[(a(!0),i(N,null,A(t.actions,o=>(a(),i("div",{key:o.link,class:"action"},[h(Bs,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link},null,8,["theme","text","href"])]))),128))])):f("",!0)]),t.image||l(e)?(a(),i("div",js,[c("div",Ks,[qs,u(t.$slots,"home-hero-image",{},()=>[t.image?(a(),$(ee,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}});const Ws=m(Rs,[["__scopeId","data-v-5a3e9999"]]),Ys=b({__name:"VPHomeHero",setup(s){const{frontmatter:e}=P();return(t,n)=>l(e).hero?(a(),$(Ws,{key:0,class:"VPHomeHero",name:l(e).hero.name,text:l(e).hero.text,tagline:l(e).hero.tagline,image:l(e).hero.image,actions:l(e).hero.actions},{"home-hero-info":v(()=>[u(t.$slots,"home-hero-info")]),"home-hero-image":v(()=>[u(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Js={},Xs={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Zs=c("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),Qs=[Zs];function en(s,e){return a(),i("svg",Xs,Qs)}const tn=m(Js,[["render",en]]),sn={class:"box"},nn={key:0,class:"icon"},on=["innerHTML"],an=["innerHTML"],rn=["innerHTML"],ln={key:4,class:"link-text"},cn={class:"link-text-value"},un=b({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),$(E,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[c("article",sn,[typeof e.icon=="object"&&e.icon.wrap?(a(),i("div",nn,[h(ee,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),$(ee,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),i("div",{key:2,class:"icon",innerHTML:e.icon},null,8,on)):f("",!0),c("h2",{class:"title",innerHTML:e.title},null,8,an),e.details?(a(),i("p",{key:3,class:"details",innerHTML:e.details},null,8,rn)):f("",!0),e.linkText?(a(),i("div",ln,[c("p",cn,[x(L(e.linkText)+" ",1),h(tn,{class:"link-text-icon"})])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}});const dn=m(un,[["__scopeId","data-v-ee984185"]]),_n={key:0,class:"VPFeatures"},vn={class:"container"},pn={class:"items"},hn=b({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=k(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,o)=>n.features?(a(),i("div",_n,[c("div",vn,[c("div",pn,[(a(!0),i(N,null,A(n.features,r=>(a(),i("div",{key:r.title,class:T(["item",[t.value]])},[h(dn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}});const fn=m(hn,[["__scopeId","data-v-b1eea84a"]]),mn=b({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=P();return(t,n)=>l(e).features?(a(),$(fn,{key:0,class:"VPHomeFeatures",features:l(e).features},null,8,["features"])):f("",!0)}}),gn={class:"VPHome"},bn=b({__name:"VPHome",setup(s){return(e,t)=>{const n=j("Content");return a(),i("div",gn,[u(e.$slots,"home-hero-before",{},void 0,!0),h(Ys,null,{"home-hero-info":v(()=>[u(e.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(e.$slots,"home-hero-image",{},void 0,!0)]),_:3}),u(e.$slots,"home-hero-after",{},void 0,!0),u(e.$slots,"home-features-before",{},void 0,!0),h(mn),u(e.$slots,"home-features-after",{},void 0,!0),h(n)])}}});const $n=m(bn,[["__scopeId","data-v-20eabd3a"]]),kn={},yn={class:"VPPage"};function Pn(s,e){const t=j("Content");return a(),i("div",yn,[u(s.$slots,"page-top"),h(t),u(s.$slots,"page-bottom")])}const Vn=m(kn,[["render",Pn]]),wn=b({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=P(),{hasSidebar:n}=D();return(o,r)=>(a(),i("div",{class:T(["VPContent",{"has-sidebar":l(n),"is-home":l(t).layout==="home"}]),id:"VPContent"},[l(e).isNotFound?u(o.$slots,"not-found",{key:0},()=>[h(_t)],!0):l(t).layout==="page"?(a(),$(Vn,{key:1},{"page-top":v(()=>[u(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[u(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):l(t).layout==="home"?(a(),$($n,{key:2},{"home-hero-before":v(()=>[u(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[u(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[u(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[u(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):l(t).layout&&l(t).layout!=="doc"?(a(),$(F(l(t).layout),{key:3})):(a(),$(Ts,{key:4},{"doc-top":v(()=>[u(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[u(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[u(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[u(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[u(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[u(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[u(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[u(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}});const Ln=m(wn,[["__scopeId","data-v-3cf691b6"]]),Sn={class:"container"},Mn=["innerHTML"],Nn=["innerHTML"],In=b({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=P(),{hasSidebar:n}=D();return(o,r)=>l(e).footer&&l(t).footer!==!1?(a(),i("footer",{key:0,class:T(["VPFooter",{"has-sidebar":l(n)}])},[c("div",Sn,[l(e).footer.message?(a(),i("p",{key:0,class:"message",innerHTML:l(e).footer.message},null,8,Mn)):f("",!0),l(e).footer.copyright?(a(),i("p",{key:1,class:"copyright",innerHTML:l(e).footer.copyright},null,8,Nn)):f("",!0)])],2)):f("",!0)}});const Tn=m(In,[["__scopeId","data-v-e4279f1c"]]),Cn={class:"header"},Bn={class:"outline"},An=b({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=P(),n=M(!1),o=M(0),r=M();Y(()=>{n.value=!1});function d(){n.value=!n.value,o.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function p(g){g.target.classList.contains("outline-link")&&(r.value&&(r.value.style.transition="none"),Oe(()=>{n.value=!1}))}function _(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(g,V)=>(a(),i("div",{class:"VPLocalNavOutlineDropdown",style:Fe({"--vp-vh":o.value+"px"})},[g.headers.length>0?(a(),i("button",{key:0,onClick:d,class:T({open:n.value})},[x(L(l(ve)(l(t)))+" ",1),h(fe,{class:"icon"})],2)):(a(),i("button",{key:1,onClick:_},L(l(t).returnToTopLabel||"Return to top"),1)),h(ce,{name:"flyout"},{default:v(()=>[n.value?(a(),i("div",{key:0,ref_key:"items",ref:r,class:"items",onClick:p},[c("div",Cn,[c("a",{class:"top-link",href:"#",onClick:_},L(l(t).returnToTopLabel||"Return to top"),1)]),c("div",Bn,[h(he,{headers:g.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}});const xn=m(An,[["__scopeId","data-v-24251f6f"]]),Hn={},zn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Dn=c("path",{d:"M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"},null,-1),En=c("path",{d:"M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"},null,-1),Fn=c("path",{d:"M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"},null,-1),On=c("path",{d:"M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"},null,-1),Gn=[Dn,En,Fn,On];function Un(s,e){return a(),i("svg",zn,Gn)}const jn=m(Hn,[["render",Un]]),Kn=["aria-expanded"],qn={class:"menu-text"},Rn=b({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=P(),{hasSidebar:n}=D(),{y:o}=Le(),r=_e([]),d=M(0);G(()=>{d.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Y(()=>{r.value=pe(t.value.outline??e.value.outline)});const p=k(()=>r.value.length===0&&!n.value),_=k(()=>({VPLocalNav:!0,fixed:p.value,"reached-top":o.value>=d.value}));return(g,V)=>l(t).layout!=="home"&&(!p.value||l(o)>=d.value)?(a(),i("div",{key:0,class:T(_.value)},[l(n)?(a(),i("button",{key:0,class:"menu","aria-expanded":g.open,"aria-controls":"VPSidebarNav",onClick:V[0]||(V[0]=y=>g.$emit("open-menu"))},[h(jn,{class:"menu-icon"}),c("span",qn,L(l(e).sidebarMenuLabel||"Menu"),1)],8,Kn)):f("",!0),h(xn,{headers:r.value,navHeight:d.value},null,8,["headers","navHeight"])],2)):f("",!0)}});const Wn=m(Rn,[["__scopeId","data-v-9e669cc1"]]);function Yn(){const s=M(!1);function e(){s.value=!0,window.addEventListener("resize",o)}function t(){s.value=!1,window.removeEventListener("resize",o)}function n(){s.value?t():e()}function o(){window.outerWidth>=768&&t()}const r=se();return U(()=>r.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:n}}const Jn={},Xn={class:"VPSwitch",type:"button",role:"switch"},Zn={class:"check"},Qn={key:0,class:"icon"};function eo(s,e){return a(),i("button",Xn,[c("span",Zn,[s.$slots.default?(a(),i("span",Qn,[u(s.$slots,"default",{},void 0,!0)])):f("",!0)])])}const to=m(Jn,[["render",eo],["__scopeId","data-v-1c29e291"]]),so={},no={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},oo=c("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),ao=[oo];function ro(s,e){return a(),i("svg",no,ao)}const lo=m(so,[["render",ro]]),io={},co={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},uo=Ge('',9),_o=[uo];function vo(s,e){return a(),i("svg",co,_o)}const po=m(io,[["render",vo]]),ho=b({__name:"VPSwitchAppearance",setup(s){const{isDark:e}=P(),t=ne("toggle-appearance",()=>{e.value=!e.value});return(n,o)=>(a(),$(to,{title:"toggle dark mode",class:"VPSwitchAppearance","aria-checked":l(e),onClick:l(t)},{default:v(()=>[h(po,{class:"sun"}),h(lo,{class:"moon"})]),_:1},8,["aria-checked","onClick"]))}});const me=m(ho,[["__scopeId","data-v-3329432d"]]),fo={key:0,class:"VPNavBarAppearance"},mo=b({__name:"VPNavBarAppearance",setup(s){const{site:e}=P();return(t,n)=>l(e).appearance&&l(e).appearance!=="force-dark"?(a(),i("div",fo,[h(me)])):f("",!0)}});const go=m(mo,[["__scopeId","data-v-283b26e9"]]),ge=M();let Te=!1,ae=0;function bo(s){const e=M(!1);if(R){!Te&&$o(),ae++;const t=U(ge,n=>{var o,r,d;n===s.el.value||(o=s.el.value)!=null&&o.contains(n)?(e.value=!0,(r=s.onFocus)==null||r.call(s)):(e.value=!1,(d=s.onBlur)==null||d.call(s))});de(()=>{t(),ae--,ae||ko()})}return Ue(e)}function $o(){document.addEventListener("focusin",Ce),Te=!0,ge.value=document.activeElement}function ko(){document.removeEventListener("focusin",Ce)}function Ce(){ge.value=document.activeElement}const yo={},Po={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Vo=c("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),wo=[Vo];function Lo(s,e){return a(),i("svg",Po,wo)}const Be=m(yo,[["render",Lo]]),So={},Mo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},No=c("circle",{cx:"12",cy:"12",r:"2"},null,-1),Io=c("circle",{cx:"19",cy:"12",r:"2"},null,-1),To=c("circle",{cx:"5",cy:"12",r:"2"},null,-1),Co=[No,Io,To];function Bo(s,e){return a(),i("svg",Mo,Co)}const Ao=m(So,[["render",Bo]]),xo={class:"VPMenuLink"},Ho=b({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=P();return(t,n)=>(a(),i("div",xo,[h(E,{class:T({active:l(O)(l(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}});const oe=m(Ho,[["__scopeId","data-v-f51f088d"]]),zo={class:"VPMenuGroup"},Do={key:0,class:"title"},Eo=b({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),i("div",zo,[e.text?(a(),i("p",Do,L(e.text),1)):f("",!0),(a(!0),i(N,null,A(e.items,n=>(a(),i(N,null,["link"in n?(a(),$(oe,{key:0,item:n},null,8,["item"])):f("",!0)],64))),256))]))}});const Fo=m(Eo,[["__scopeId","data-v-a6b0397c"]]),Oo={class:"VPMenu"},Go={key:0,class:"items"},Uo=b({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),i("div",Oo,[e.items?(a(),i("div",Go,[(a(!0),i(N,null,A(e.items,n=>(a(),i(N,{key:n.text},["link"in n?(a(),$(oe,{key:0,item:n},null,8,["item"])):(a(),$(Fo,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0),u(e.$slots,"default",{},void 0,!0)]))}});const jo=m(Uo,[["__scopeId","data-v-e42ed9b3"]]),Ko=["aria-expanded","aria-label"],qo={key:0,class:"text"},Ro=["innerHTML"],Wo={class:"menu"},Yo=b({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=M(!1),t=M();bo({el:t,onBlur:n});function n(){e.value=!1}return(o,r)=>(a(),i("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=d=>e.value=!0),onMouseleave:r[2]||(r[2]=d=>e.value=!1)},[c("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":o.label,onClick:r[0]||(r[0]=d=>e.value=!e.value)},[o.button||o.icon?(a(),i("span",qo,[o.icon?(a(),$(F(o.icon),{key:0,class:"option-icon"})):f("",!0),o.button?(a(),i("span",{key:1,innerHTML:o.button},null,8,Ro)):f("",!0),h(Be,{class:"text-icon"})])):(a(),$(Ao,{key:1,class:"icon"}))],8,Ko),c("div",Wo,[h(jo,{items:o.items},{default:v(()=>[u(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}});const be=m(Yo,[["__scopeId","data-v-aa8de344"]]),Jo={discord:'Discord',facebook:'Facebook',github:'GitHub',instagram:'Instagram',linkedin:'LinkedIn',mastodon:'Mastodon',slack:'Slack',twitter:'Twitter',x:'X',youtube:'YouTube'},Xo=["href","aria-label","innerHTML"],Zo=b({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=k(()=>typeof e.icon=="object"?e.icon.svg:Jo[e.icon]);return(n,o)=>(a(),i("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Xo))}});const Qo=m(Zo,[["__scopeId","data-v-16cf740a"]]),ea={class:"VPSocialLinks"},ta=b({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),i("div",ea,[(a(!0),i(N,null,A(e.links,({link:n,icon:o,ariaLabel:r})=>(a(),$(Qo,{key:n,icon:o,link:n,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}});const $e=m(ta,[["__scopeId","data-v-e71e869c"]]),sa={key:0,class:"group translations"},na={class:"trans-title"},oa={key:1,class:"group"},aa={class:"item appearance"},ra={class:"label"},la={class:"appearance-action"},ia={key:2,class:"group"},ca={class:"item social-links"},ua=b({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=P(),{localeLinks:n,currentLang:o}=X({correspondingLink:!0}),r=k(()=>n.value.length&&o.value.label||e.value.appearance||t.value.socialLinks);return(d,p)=>r.value?(a(),$(be,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[l(n).length&&l(o).label?(a(),i("div",sa,[c("p",na,L(l(o).label),1),(a(!0),i(N,null,A(l(n),_=>(a(),$(oe,{key:_.link,item:_},null,8,["item"]))),128))])):f("",!0),l(e).appearance?(a(),i("div",oa,[c("div",aa,[c("p",ra,L(l(t).darkModeSwitchLabel||"Appearance"),1),c("div",la,[h(me)])])])):f("",!0),l(t).socialLinks?(a(),i("div",ia,[c("div",ca,[h($e,{class:"social-links-list",links:l(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}});const da=m(ua,[["__scopeId","data-v-c8c2ae4b"]]),_a=s=>(H("data-v-6bee1efd"),s=s(),z(),s),va=["aria-expanded"],pa=_a(()=>c("span",{class:"container"},[c("span",{class:"top"}),c("span",{class:"middle"}),c("span",{class:"bottom"})],-1)),ha=[pa],fa=b({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),i("button",{type:"button",class:T(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},ha,10,va))}});const ma=m(fa,[["__scopeId","data-v-6bee1efd"]]),ga=["innerHTML"],ba=b({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=P();return(t,n)=>(a(),$(E,{class:T({VPNavBarMenuLink:!0,active:l(O)(l(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:v(()=>[c("span",{innerHTML:t.item.text},null,8,ga)]),_:1},8,["class","href","target","rel"]))}});const $a=m(ba,[["__scopeId","data-v-cb318fec"]]),ka=b({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=P(),n=r=>"link"in r?O(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(n),o=k(()=>n(e.item));return(r,d)=>(a(),$(be,{class:T({VPNavBarMenuGroup:!0,active:l(O)(l(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||o.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),ya=s=>(H("data-v-f732b5d0"),s=s(),z(),s),Pa={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Va=ya(()=>c("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),wa=b({__name:"VPNavBarMenu",setup(s){const{theme:e}=P();return(t,n)=>l(e).nav?(a(),i("nav",Pa,[Va,(a(!0),i(N,null,A(l(e).nav,o=>(a(),i(N,{key:o.text},["link"in o?(a(),$($a,{key:0,item:o},null,8,["item"])):(a(),$(ka,{key:1,item:o},null,8,["item"]))],64))),128))])):f("",!0)}});const La=m(wa,[["__scopeId","data-v-f732b5d0"]]);function Sa(s,e){const{localeIndex:t}=P();function n(o){var S,C;const r=o.split("."),d=s&&typeof s=="object",p=d&&((C=(S=s.locales)==null?void 0:S[t.value])==null?void 0:C.translations)||null,_=d&&s.translations||null;let g=p,V=_,y=e;const I=r.pop();for(const B of r){let w=null;const K=y==null?void 0:y[B];K&&(w=y=K);const W=V==null?void 0:V[B];W&&(w=V=W);const q=g==null?void 0:g[B];q&&(w=g=q),K||(y=w),W||(V=w),q||(g=w)}return(g==null?void 0:g[I])??(V==null?void 0:V[I])??(y==null?void 0:y[I])??""}return n}const Ma=["aria-label"],Na={class:"DocSearch-Button-Container"},Ia=c("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[c("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),Ta={class:"DocSearch-Button-Placeholder"},Ca=c("span",{class:"DocSearch-Button-Keys"},[c("kbd",{class:"DocSearch-Button-Key"}),c("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Pe=b({__name:"VPNavBarSearchButton",setup(s){var o;const{theme:e}=P(),t={button:{buttonText:"Search",buttonAriaLabel:"Search"}},n=Sa((o=e.value.search)==null?void 0:o.options,t);return(r,d)=>(a(),i("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":l(n)("button.buttonAriaLabel")},[c("span",Na,[Ia,c("span",Ta,L(l(n)("button.buttonText")),1)]),Ca],8,Ma))}});const Ba={class:"VPNavBarSearch"},Aa={id:"local-search"},xa={key:1,id:"docsearch"},Ha=b({__name:"VPNavBarSearch",setup(s){const e=je(()=>Ke(()=>import("./VPLocalSearchBox.f83fd2dc.js"),["assets/chunks/VPLocalSearchBox.f83fd2dc.js","assets/chunks/framework.b8722102.js"])),t=()=>null,{theme:n}=P(),o=M(!1),r=M(!1);G(()=>{});function d(){o.value||(o.value=!0,setTimeout(p,16))}function p(){const y=new Event("keydown");y.key="k",y.metaKey=!0,window.dispatchEvent(y),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||p()},16)}function _(y){const I=y.target,S=I.tagName;return I.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const g=M(!1);ke("k",y=>{(y.ctrlKey||y.metaKey)&&(y.preventDefault(),g.value=!0)}),ke("/",y=>{_(y)||(y.preventDefault(),g.value=!0)});const V="local";return(y,I)=>{var S;return a(),i("div",Ba,[l(V)==="local"?(a(),i(N,{key:0},[g.value?(a(),$(l(e),{key:0,onClose:I[0]||(I[0]=C=>g.value=!1)})):f("",!0),c("div",Aa,[h(Pe,{onClick:I[1]||(I[1]=C=>g.value=!0)})])],64)):l(V)==="algolia"?(a(),i(N,{key:1},[o.value?(a(),$(l(t),{key:0,algolia:((S=l(n).search)==null?void 0:S.options)??l(n).algolia,onVnodeBeforeMount:I[2]||(I[2]=C=>r.value=!0)},null,8,["algolia"])):f("",!0),r.value?f("",!0):(a(),i("div",xa,[h(Pe,{onClick:d})]))],64)):f("",!0)])}}});const za=b({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=P();return(t,n)=>l(e).socialLinks?(a(),$($e,{key:0,class:"VPNavBarSocialLinks",links:l(e).socialLinks},null,8,["links"])):f("",!0)}});const Da=m(za,[["__scopeId","data-v-ef6192dc"]]),Ea=["href"],Fa=b({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=P(),{hasSidebar:n}=D(),{currentLang:o}=X();return(r,d)=>(a(),i("div",{class:T(["VPNavBarTitle",{"has-sidebar":l(n)}])},[c("a",{class:"title",href:l(t).logoLink??l(J)(l(o).link)},[u(r.$slots,"nav-bar-title-before",{},void 0,!0),l(t).logo?(a(),$(ee,{key:0,class:"logo",image:l(t).logo},null,8,["image"])):f("",!0),l(t).siteTitle?(a(),i(N,{key:1},[x(L(l(t).siteTitle),1)],64)):l(t).siteTitle===void 0?(a(),i(N,{key:2},[x(L(l(e).title),1)],64)):f("",!0),u(r.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ea)],2))}});const Oa=m(Fa,[["__scopeId","data-v-2973dbb4"]]),Ga={},Ua={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ja=c("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),Ka=c("path",{d:" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z ",class:"css-c4d79v"},null,-1),qa=[ja,Ka];function Ra(s,e){return a(),i("svg",Ua,qa)}const Ae=m(Ga,[["render",Ra]]),Wa={class:"items"},Ya={class:"title"},Ja=b({__name:"VPNavBarTranslations",setup(s){const{theme:e}=P(),{localeLinks:t,currentLang:n}=X({correspondingLink:!0});return(o,r)=>l(t).length&&l(n).label?(a(),$(be,{key:0,class:"VPNavBarTranslations",icon:Ae,label:l(e).langMenuLabel||"Change language"},{default:v(()=>[c("div",Wa,[c("p",Ya,L(l(n).label),1),(a(!0),i(N,null,A(l(t),d=>(a(),$(oe,{key:d.link,item:d},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}});const Xa=m(Ja,[["__scopeId","data-v-ff4524ae"]]),Za=s=>(H("data-v-f1abbc6e"),s=s(),z(),s),Qa={class:"container"},er={class:"title"},tr={class:"content"},sr=Za(()=>c("div",{class:"curtain"},null,-1)),nr={class:"content-body"},or=b({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const{y:e}=Le(),{hasSidebar:t}=D(),{frontmatter:n}=P(),o=M({});return Ve(()=>{o.value={"has-sidebar":t.value,top:n.value.layout==="home"&&e.value===0}}),(r,d)=>(a(),i("div",{class:T(["VPNavBar",o.value])},[c("div",Qa,[c("div",er,[h(Oa,null,{"nav-bar-title-before":v(()=>[u(r.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(r.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),c("div",tr,[sr,c("div",nr,[u(r.$slots,"nav-bar-content-before",{},void 0,!0),h(Ha,{class:"search"}),h(La,{class:"menu"}),h(Xa,{class:"translations"}),h(go,{class:"appearance"}),h(Da,{class:"social-links"}),h(da,{class:"extra"}),u(r.$slots,"nav-bar-content-after",{},void 0,!0),h(ma,{class:"hamburger",active:r.isScreenOpen,onClick:d[0]||(d[0]=p=>r.$emit("toggle-screen"))},null,8,["active"])])])])],2))}});const ar=m(or,[["__scopeId","data-v-f1abbc6e"]]),rr={key:0,class:"VPNavScreenAppearance"},lr={class:"text"},ir=b({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=P();return(n,o)=>l(e).appearance?(a(),i("div",rr,[c("p",lr,L(l(t).darkModeSwitchLabel||"Appearance"),1),h(me)])):f("",!0)}});const cr=m(ir,[["__scopeId","data-v-0dc5cf49"]]),ur=b({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=ne("close-screen");return(t,n)=>(a(),$(E,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:l(e)},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const dr=m(ur,[["__scopeId","data-v-fe523e3d"]]),_r={},vr={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},pr=c("path",{d:"M18.9,10.9h-6v-6c0-0.6-0.4-1-1-1s-1,0.4-1,1v6h-6c-0.6,0-1,0.4-1,1s0.4,1,1,1h6v6c0,0.6,0.4,1,1,1s1-0.4,1-1v-6h6c0.6,0,1-0.4,1-1S19.5,10.9,18.9,10.9z"},null,-1),hr=[pr];function fr(s,e){return a(),i("svg",vr,hr)}const mr=m(_r,[["render",fr]]),gr=b({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=ne("close-screen");return(t,n)=>(a(),$(E,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:l(e)},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const xe=m(gr,[["__scopeId","data-v-aea78dd1"]]),br={class:"VPNavScreenMenuGroupSection"},$r={key:0,class:"title"},kr=b({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),i("div",br,[e.text?(a(),i("p",$r,L(e.text),1)):f("",!0),(a(!0),i(N,null,A(e.items,n=>(a(),$(xe,{key:n.text,item:n},null,8,["item"]))),128))]))}});const yr=m(kr,[["__scopeId","data-v-f60dbfa7"]]),Pr=["aria-controls","aria-expanded"],Vr={class:"button-text"},wr=["id"],Lr={key:1,class:"group"},Sr=b({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=M(!1),n=k(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function o(){t.value=!t.value}return(r,d)=>(a(),i("div",{class:T(["VPNavScreenMenuGroup",{open:t.value}])},[c("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:o},[c("span",Vr,L(r.text),1),h(mr,{class:"button-icon"})],8,Pr),c("div",{id:n.value,class:"items"},[(a(!0),i(N,null,A(r.items,p=>(a(),i(N,{key:p.text},["link"in p?(a(),i("div",{key:p.text,class:"item"},[h(xe,{item:p},null,8,["item"])])):(a(),i("div",Lr,[h(yr,{text:p.text,items:p.items},null,8,["text","items"])]))],64))),128))],8,wr)],2))}});const Mr=m(Sr,[["__scopeId","data-v-c2c554ed"]]),Nr={key:0,class:"VPNavScreenMenu"},Ir=b({__name:"VPNavScreenMenu",setup(s){const{theme:e}=P();return(t,n)=>l(e).nav?(a(),i("nav",Nr,[(a(!0),i(N,null,A(l(e).nav,o=>(a(),i(N,{key:o.text},["link"in o?(a(),$(dr,{key:0,item:o},null,8,["item"])):(a(),$(Mr,{key:1,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Tr=b({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=P();return(t,n)=>l(e).socialLinks?(a(),$($e,{key:0,class:"VPNavScreenSocialLinks",links:l(e).socialLinks},null,8,["links"])):f("",!0)}}),Cr={class:"list"},Br=b({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=X({correspondingLink:!0}),n=M(!1);function o(){n.value=!n.value}return(r,d)=>l(e).length&&l(t).label?(a(),i("div",{key:0,class:T(["VPNavScreenTranslations",{open:n.value}])},[c("button",{class:"title",onClick:o},[h(Ae,{class:"icon lang"}),x(" "+L(l(t).label)+" ",1),h(Be,{class:"icon chevron"})]),c("ul",Cr,[(a(!0),i(N,null,A(l(e),p=>(a(),i("li",{key:p.link,class:"item"},[h(E,{class:"link",href:p.link},{default:v(()=>[x(L(p.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}});const Ar=m(Br,[["__scopeId","data-v-41505286"]]),xr={class:"container"},Hr=b({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=M(null),t=Se(R?document.body:null);return(n,o)=>(a(),$(ce,{name:"fade",onEnter:o[0]||(o[0]=r=>t.value=!0),onAfterLeave:o[1]||(o[1]=r=>t.value=!1)},{default:v(()=>[n.open?(a(),i("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[c("div",xr,[u(n.$slots,"nav-screen-content-before",{},void 0,!0),h(Ir,{class:"menu"}),h(Ar,{class:"translations"}),h(cr,{class:"appearance"}),h(Tr,{class:"social-links"}),u(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}});const zr=m(Hr,[["__scopeId","data-v-57cce842"]]),Dr={key:0,class:"VPNav"},Er=b({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=Yn(),{frontmatter:o}=P(),r=k(()=>o.value.navbar!==!1);return Me("close-screen",t),te(()=>{R&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(d,p)=>r.value?(a(),i("header",Dr,[h(ar,{"is-screen-open":l(e),onToggleScreen:l(n)},{"nav-bar-title-before":v(()=>[u(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[u(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[u(d.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),h(zr,{open:l(e)},{"nav-screen-content-before":v(()=>[u(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[u(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}});const Fr=m(Er,[["__scopeId","data-v-7ad780c2"]]),Or=s=>(H("data-v-bd01e0d5"),s=s(),z(),s),Gr=["role","tabindex"],Ur=Or(()=>c("div",{class:"indicator"},null,-1)),jr=["onKeydown"],Kr={key:1,class:"items"},qr=b({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:n,isLink:o,isActiveLink:r,hasActiveLink:d,hasChildren:p,toggle:_}=ft(k(()=>e.item)),g=k(()=>p.value?"section":"div"),V=k(()=>o.value?"a":"div"),y=k(()=>p.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),I=k(()=>o.value?void 0:"button"),S=k(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":o.value},{"is-active":r.value},{"has-active":d.value}]);function C(w){"key"in w&&w.key!=="Enter"||!e.item.link&&_()}function B(){e.item.link&&_()}return(w,K)=>{const W=j("VPSidebarItem",!0);return a(),$(F(g.value),{class:T(["VPSidebarItem",S.value])},{default:v(()=>[w.item.text?(a(),i("div",Z({key:0,class:"item",role:I.value},Re(w.item.items?{click:C,keydown:C}:{},!0),{tabindex:w.item.items&&0}),[Ur,w.item.link?(a(),$(E,{key:0,tag:V.value,class:"link",href:w.item.link,rel:w.item.rel,target:w.item.target},{default:v(()=>[(a(),$(F(y.value),{class:"text",innerHTML:w.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),$(F(y.value),{key:1,class:"text",innerHTML:w.item.text},null,8,["innerHTML"])),w.item.collapsed!=null?(a(),i("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:B,onKeydown:qe(B,["enter"]),tabindex:"0"},[h(fe,{class:"caret-icon"})],40,jr)):f("",!0)],16,Gr)):f("",!0),w.item.items&&w.item.items.length?(a(),i("div",Kr,[w.depth<5?(a(!0),i(N,{key:0},A(w.item.items,q=>(a(),$(W,{key:q.text,item:q,depth:w.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}});const Rr=m(qr,[["__scopeId","data-v-bd01e0d5"]]),He=s=>(H("data-v-ee2efba5"),s=s(),z(),s),Wr=He(()=>c("div",{class:"curtain"},null,-1)),Yr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Jr=He(()=>c("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),Xr=b({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const e=s,{sidebarGroups:t,hasSidebar:n}=D(),o=M(null),r=Se(R?document.body:null);return U([e,o],()=>{var d;e.open?(r.value=!0,(d=o.value)==null||d.focus()):r.value=!1},{immediate:!0,flush:"post"}),(d,p)=>l(n)?(a(),i("aside",{key:0,class:T(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:o,onClick:p[0]||(p[0]=We(()=>{},["stop"]))},[Wr,c("nav",Yr,[Jr,u(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),i(N,null,A(l(t),_=>(a(),i("div",{key:_.text,class:"group"},[h(Rr,{item:_,depth:0},null,8,["item"])]))),128)),u(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}});const Zr=m(Xr,[["__scopeId","data-v-ee2efba5"]]),Qr=b({__name:"VPSkipLink",setup(s){const e=se(),t=M();U(()=>e.path,()=>t.value.focus());function n({target:o}){const r=document.getElementById(decodeURIComponent(o.hash).slice(1));if(r){const d=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",d)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",d),r.focus(),window.scrollTo(0,0)}}return(o,r)=>(a(),i(N,null,[c("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),c("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}});const el=m(Qr,[["__scopeId","data-v-c8291ffa"]]),tl=b({__name:"Layout",setup(s){const{isOpen:e,open:t,close:n}=D(),o=se();U(()=>o.path,n),ht(e,n);const{frontmatter:r}=P(),d=Ye(),p=k(()=>!!d["home-hero-image"]);return Me("hero-image-slot-exists",p),(_,g)=>{const V=j("Content");return l(r).layout!==!1?(a(),i("div",{key:0,class:T(["Layout",l(r).pageClass])},[u(_.$slots,"layout-top",{},void 0,!0),h(el),h(et,{class:"backdrop",show:l(e),onClick:l(n)},null,8,["show","onClick"]),h(Fr,null,{"nav-bar-title-before":v(()=>[u(_.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(_.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[u(_.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[u(_.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[u(_.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[u(_.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),h(Wn,{open:l(e),onOpenMenu:l(t)},null,8,["open","onOpenMenu"]),h(Zr,{open:l(e)},{"sidebar-nav-before":v(()=>[u(_.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[u(_.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),h(Ln,null,{"page-top":v(()=>[u(_.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[u(_.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[u(_.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[u(_.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(_.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(_.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[u(_.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[u(_.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[u(_.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[u(_.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[u(_.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[u(_.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[u(_.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[u(_.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[u(_.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[u(_.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[u(_.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(_.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(_.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(_.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),h(Tn),u(_.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),$(V,{key:1}))}}});const sl=m(tl,[["__scopeId","data-v-9d8abc1e"]]);const ol={Layout:sl,enhanceApp:({app:s})=>{s.component("Badge",Xe)}};export{Sa as c,ol as t,P as u}; diff --git a/docs/assets/guide_existing-project-integration.md.dfe1a60e.js b/docs/assets/guide_existing-project-integration.md.3810c307.js similarity index 92% rename from docs/assets/guide_existing-project-integration.md.dfe1a60e.js rename to docs/assets/guide_existing-project-integration.md.3810c307.js index 5f19e68..5202a2f 100644 --- a/docs/assets/guide_existing-project-integration.md.dfe1a60e.js +++ b/docs/assets/guide_existing-project-integration.md.3810c307.js @@ -1,7 +1,7 @@ import{_ as s,o as a,c as n,Q as o}from"./chunks/framework.b8722102.js";const u=JSON.parse('{"title":"Existing Project Integration","description":"","frontmatter":{},"headers":[],"relativePath":"guide/existing-project-integration.md","filePath":"guide/existing-project-integration.md"}'),l={name:"guide/existing-project-integration.md"},e=o(`

Existing Project Integration

So, you've read the Getting Started guide, and may be wondering how to integrate Sable into an existing project. It's very simple.

Prerequisites

  • If you have yet to do so, make sure to read the Getting Started guide. The process for integrating Sable into an existing project is very similar to what is described there, but with a slight twist, so everything learned there will be applicable for existing projects.
  • Make sure all of your Postgres databases across every environment where your code is running have already converged to the same latest state.

Once those prerequisites are met, you're all set to go.

Application Configuration

  • Ensure support for sable is configured. Your configuration should look something like the following:
c#
using Marten;
 using Oakton;
-using BloombergLP.Sable.Extensions;
-using BloombergLP.Sable.Samples.Core;
+using Sable.Extensions;
+using Sable.Samples.Core;
 using Weasel.Core;
 
 var builder = WebApplication.CreateBuilder(args);
@@ -22,8 +22,8 @@ import{_ as s,o as a,c as n,Q as o}from"./chunks/framework.b8722102.js";const u=
 
 return await app.RunOaktonCommands(args);
using Marten;
 using Oakton;
-using BloombergLP.Sable.Extensions;
-using BloombergLP.Sable.Samples.Core;
+using Sable.Extensions;
+using Sable.Samples.Core;
 using Weasel.Core;
 
 var builder = WebApplication.CreateBuilder(args);
diff --git a/docs/assets/guide_existing-project-integration.md.dfe1a60e.lean.js b/docs/assets/guide_existing-project-integration.md.3810c307.lean.js
similarity index 100%
rename from docs/assets/guide_existing-project-integration.md.dfe1a60e.lean.js
rename to docs/assets/guide_existing-project-integration.md.3810c307.lean.js
diff --git a/docs/assets/guide_multi-tenancy-setup.md.48845541.js b/docs/assets/guide_multi-tenancy-setup.md.ce8c0d82.js
similarity index 90%
rename from docs/assets/guide_multi-tenancy-setup.md.48845541.js
rename to docs/assets/guide_multi-tenancy-setup.md.ce8c0d82.js
index 51c952f..6c295b0 100644
--- a/docs/assets/guide_multi-tenancy-setup.md.48845541.js
+++ b/docs/assets/guide_multi-tenancy-setup.md.ce8c0d82.js
@@ -1,7 +1,7 @@
-import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.b8722102.js";const d=JSON.parse('{"title":"Multi-tenancy Setup","description":"","frontmatter":{},"headers":[],"relativePath":"guide/multi-tenancy-setup.md","filePath":"guide/multi-tenancy-setup.md"}'),l={name:"guide/multi-tenancy-setup.md"},p=o(`

Multi-tenancy Setup

So, you already went through the Getting Started guide, and may be wondering if there's any additional configuration needed for multi-tenancy setups. Given that all Postgres databases for the configured tenants must have identical structures, there's none. Everything you learned in the getting started guide still applies for any single database setup with multi-tenancy configured. As such, a multi-tenancy setup will look something like this:

c#
using Marten;
+import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.b8722102.js";const F=JSON.parse('{"title":"Multi-tenancy Setup","description":"","frontmatter":{},"headers":[],"relativePath":"guide/multi-tenancy-setup.md","filePath":"guide/multi-tenancy-setup.md"}'),l={name:"guide/multi-tenancy-setup.md"},p=o(`

Multi-tenancy Setup

So, you already went through the Getting Started guide, and may be wondering if there's any additional configuration needed for multi-tenancy setups. Given that all Postgres databases for the configured tenants must have identical structures, there's none. Everything you learned in the getting started guide still applies for any single database setup with multi-tenancy configured. As such, a multi-tenancy setup will look something like this:

c#
using Marten;
 using Oakton;
-using BloombergLP.Sable.Extensions;
-using BloombergLP.Sable.Samples.Core;
+using Sable.Extensions;
+using Sable.Samples.Core;
 using Weasel.Core;
 
 var builder = WebApplication.CreateBuilder(args);
@@ -30,8 +30,8 @@ import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.b8722102.js";const d=
 
 return await app.RunOaktonCommands(args);
using Marten;
 using Oakton;
-using BloombergLP.Sable.Extensions;
-using BloombergLP.Sable.Samples.Core;
+using Sable.Extensions;
+using Sable.Samples.Core;
 using Weasel.Core;
 
 var builder = WebApplication.CreateBuilder(args);
@@ -58,4 +58,4 @@ import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.b8722102.js";const d=
 var app = builder.Build();
 app.MapGet("/", () => "💪🏾");
 
-return await app.RunOaktonCommands(args);

Again, given that all Postgres databases for the configured tenants must have identical structures, there's no need to generate a different set of migrations for every single database identifier. So, for the example shown above, you just need to specify the database name as Marten, not books_basic nor books_basic, when running Sable commands. That's it.

See Multi-tencancy Sample for a sample application with a multi-tenancy setup.

To learn more about multi-tenancy in Marten, see Marten Multi-tencancy.

`,6),e=[p];function t(r,c,E,y,i,u){return n(),a("div",null,e)}const g=s(l,[["render",t]]);export{d as __pageData,g as default}; +return await app.RunOaktonCommands(args);

Again, given that all Postgres databases for the configured tenants must have identical structures, there's no need to generate a different set of migrations for every single database identifier. So, for the example shown above, you just need to specify the database name as Marten, not books_basic nor books_basic, when running Sable commands. That's it.

See Multi-tencancy Sample for a sample application with a multi-tenancy setup.

To learn more about multi-tenancy in Marten, see Marten Multi-tencancy.

`,6),e=[p];function t(r,c,E,y,i,u){return n(),a("div",null,e)}const g=s(l,[["render",t]]);export{F as __pageData,g as default}; diff --git a/docs/assets/guide_multi-tenancy-setup.md.48845541.lean.js b/docs/assets/guide_multi-tenancy-setup.md.ce8c0d82.lean.js similarity index 73% rename from docs/assets/guide_multi-tenancy-setup.md.48845541.lean.js rename to docs/assets/guide_multi-tenancy-setup.md.ce8c0d82.lean.js index e8a7313..2535733 100644 --- a/docs/assets/guide_multi-tenancy-setup.md.48845541.lean.js +++ b/docs/assets/guide_multi-tenancy-setup.md.ce8c0d82.lean.js @@ -1 +1 @@ -import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.b8722102.js";const d=JSON.parse('{"title":"Multi-tenancy Setup","description":"","frontmatter":{},"headers":[],"relativePath":"guide/multi-tenancy-setup.md","filePath":"guide/multi-tenancy-setup.md"}'),l={name:"guide/multi-tenancy-setup.md"},p=o("",6),e=[p];function t(r,c,E,y,i,u){return n(),a("div",null,e)}const g=s(l,[["render",t]]);export{d as __pageData,g as default}; +import{_ as s,o as n,c as a,Q as o}from"./chunks/framework.b8722102.js";const F=JSON.parse('{"title":"Multi-tenancy Setup","description":"","frontmatter":{},"headers":[],"relativePath":"guide/multi-tenancy-setup.md","filePath":"guide/multi-tenancy-setup.md"}'),l={name:"guide/multi-tenancy-setup.md"},p=o("",6),e=[p];function t(r,c,E,y,i,u){return n(),a("div",null,e)}const g=s(l,[["render",t]]);export{F as __pageData,g as default}; diff --git a/docs/assets/guide_multiple-database-setup.md.d5602c5e.js b/docs/assets/guide_multiple-database-setup.md.e2e4ff14.js similarity index 94% rename from docs/assets/guide_multiple-database-setup.md.d5602c5e.js rename to docs/assets/guide_multiple-database-setup.md.e2e4ff14.js index cc197ab..19bf45a 100644 --- a/docs/assets/guide_multiple-database-setup.md.d5602c5e.js +++ b/docs/assets/guide_multiple-database-setup.md.e2e4ff14.js @@ -1,7 +1,7 @@ import{_ as s,o as a,c as n,Q as o}from"./chunks/framework.b8722102.js";const d=JSON.parse('{"title":"Multiple Database Setup","description":"","frontmatter":{},"headers":[],"relativePath":"guide/multiple-database-setup.md","filePath":"guide/multiple-database-setup.md"}'),l={name:"guide/multiple-database-setup.md"},p=o(`

Multiple Database Setup

After going through the Getting Started guide, you may be wondering how to manage migrations for a project where multiple databases are configured with Sable. It's pretty simple. Sable will just maintain migrations in separate directories for the configured databases. Let's say your configuration looks something like the following:

c#
using Marten;
 using Oakton;
-using BloombergLP.Sable.Extensions;
-using BloombergLP.Sable.Samples.Core;
+using Sable.Extensions;
+using Sable.Samples.Core;
 using Weasel.Core;
 
 var builder = WebApplication.CreateBuilder(args);
@@ -48,8 +48,8 @@ import{_ as s,o as a,c as n,Q as o}from"./chunks/framework.b8722102.js";const d=
 
 return await app.RunOaktonCommands(args);
using Marten;
 using Oakton;
-using BloombergLP.Sable.Extensions;
-using BloombergLP.Sable.Samples.Core;
+using Sable.Extensions;
+using Sable.Samples.Core;
 using Weasel.Core;
 
 var builder = WebApplication.CreateBuilder(args);
diff --git a/docs/assets/guide_multiple-database-setup.md.d5602c5e.lean.js b/docs/assets/guide_multiple-database-setup.md.e2e4ff14.lean.js
similarity index 100%
rename from docs/assets/guide_multiple-database-setup.md.d5602c5e.lean.js
rename to docs/assets/guide_multiple-database-setup.md.e2e4ff14.lean.js
diff --git a/docs/assets/introduction_getting-started.md.7f2c46f9.js b/docs/assets/introduction_getting-started.md.b6a14f95.js
similarity index 77%
rename from docs/assets/introduction_getting-started.md.7f2c46f9.js
rename to docs/assets/introduction_getting-started.md.b6a14f95.js
index 4b1fa44..27b0a25 100644
--- a/docs/assets/introduction_getting-started.md.7f2c46f9.js
+++ b/docs/assets/introduction_getting-started.md.b6a14f95.js
@@ -1,7 +1,7 @@
-import{_ as s,o as a,c as n,Q as o}from"./chunks/framework.b8722102.js";const g=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/getting-started.md","filePath":"introduction/getting-started.md"}'),l={name:"introduction/getting-started.md"},e=o(`

Getting Started

Prerequisites

Before starting, ensure the following prerequisites are met:

  • Docker is installed. To learn why Docker is needed, see How Sable Works.
  • The Sable dotnet tool is installed by running the following command:
bash
dotnet tool install -g BloombergLP.Sable.Cli
dotnet tool install -g BloombergLP.Sable.Cli

See .NET Tools to learn more about how .NET tools work.

Application Configuration

This guide assumes you have experience with configuring Marten along with its command line tooling support in .NET projects. If that is not the case, please take a look at the following guides before proceeding:

Ok. Let's move on. We're going to integrate Sable into a new project. To learn how to integrate Sable into an exiting project, see Existing Project Integration after going through this guide. The process is similar, so everything learned here will be applicable for existing projects as well.

  • Create a new project:
bash
dotnet new webapi
dotnet new webapi
  • Configure marten along with its command line tooling support.
  • Add Sable integration support to the project:
bash
dotnet add package BloombergLP.Sable
dotnet add package BloombergLP.Sable

Now the fun part. Replace whatever overload of AddMarten you're using with AddMartenWithSableSupport. That's all there is to it for the integration.

At this point, you should have a configuration that looks something like this:

c#
using Marten;
+import{_ as s,o as a,c as n,Q as o}from"./chunks/framework.b8722102.js";const h=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/getting-started.md","filePath":"introduction/getting-started.md"}'),l={name:"introduction/getting-started.md"},e=o(`

Getting Started

Prerequisites

Before starting, ensure the following prerequisites are met:

  • Docker is installed. To learn why Docker is needed, see How Sable Works.
  • The Sable dotnet tool is installed by running the following command:
bash
dotnet tool install -g Sable.Cli
dotnet tool install -g Sable.Cli

See .NET Tools to learn more about how .NET tools work.

Application Configuration

This guide assumes you have experience with configuring Marten along with its command line tooling support in .NET projects. If that is not the case, please take a look at the following guides before proceeding:

Ok. Let's move on. We're going to integrate Sable into a new project. To learn how to integrate Sable into an exiting project, see Existing Project Integration after going through this guide. The process is similar, so everything learned here will be applicable for existing projects as well.

  • Create a new project:
bash
dotnet new webapi
dotnet new webapi
  • Configure marten along with its command line tooling support.
  • Add Sable integration support to the project:
bash
dotnet add package Sable
dotnet add package Sable

Now the fun part. Replace whatever overload of AddMarten you're using with AddMartenWithSableSupport. That's all there is to it for the integration.

At this point, you should have a configuration that looks something like this:

c#
using Marten;
 using Oakton;
-using BloombergLP.Sable.Extensions;
-using BloombergLP.Sable.Samples.Core;
+using Sable.Extensions;
+using Sable.Samples.Core;
 using Weasel.Core;
 
 var builder = WebApplication.CreateBuilder(args);
@@ -22,8 +22,8 @@ import{_ as s,o as a,c as n,Q as o}from"./chunks/framework.b8722102.js";const g=
 
 return await app.RunOaktonCommands(args);
using Marten;
 using Oakton;
-using BloombergLP.Sable.Extensions;
-using BloombergLP.Sable.Samples.Core;
+using Sable.Extensions;
+using Sable.Samples.Core;
 using Weasel.Core;
 
 var builder = WebApplication.CreateBuilder(args);
@@ -42,4 +42,4 @@ import{_ as s,o as a,c as n,Q as o}from"./chunks/framework.b8722102.js";const g=
 var app = builder.Build();
 app.MapGet("/", () => "💪🏾");
 
-return await app.RunOaktonCommands(args);

Initialize Migration Infrastructure

Ok. Now that your project is properly configured, what's next? In your project directory, run the following command:

bash
sable init --database <database-name> --schema <schema-name>
sable init --database <database-name> --schema <schema-name>

The default values for the database and schema names are Marten and public, respectively. Marten is the name associated with the database for the default configuration. This is important when multiple databases are used in the same project.

Running the command above should have created some migration files in the ./sable/<database-name>/migrations directory.

Update Database

Now, to update the database, follow either one of the following strategies:

  • Create a migration script that you can then apply manually:
bash
sable migrations script --database <database-name>
sable migrations script --database <database-name>

Running the command above should have created a migration script in the ./sable/<database-name>/scripts directory. You can now take that script and apply it manually to your database.

  • Point Sable to the database and have it run the migration it for you:
bash
sable database update <connection-string> --database <database-name>
sable database update <connection-string> --database <database-name>

Running the command above should have applied the pending migrations to your database.

Add Migration

Ok. All good so far, but you just added a new index to a document and want to update the database. What do you do? Pretty simple. Just add a new migration:

bash
sable migrations add <migration-name> --database <database-name>
sable migrations add <migration-name> --database <database-name>

Running the command above should have created a new migration file in the ./sable/<database-name>/migrations directory.

To apply that migration, just follow one of the database update strategies outlined above one more time.

What's Next?

`,37),p=[e];function t(r,c,i,y,E,d){return a(),n("div",null,p)}const h=s(l,[["render",t]]);export{g as __pageData,h as default}; +return await app.RunOaktonCommands(args);

Initialize Migration Infrastructure

Ok. Now that your project is properly configured, what's next? In your project directory, run the following command:

bash
sable init --database <database-name> --schema <schema-name>
sable init --database <database-name> --schema <schema-name>

The default values for the database and schema names are Marten and public, respectively. Marten is the name associated with the database for the default configuration. This is important when multiple databases are used in the same project.

Running the command above should have created some migration files in the ./sable/<database-name>/migrations directory.

Update Database

Now, to update the database, follow either one of the following strategies:

  • Create a migration script that you can then apply manually:
bash
sable migrations script --database <database-name>
sable migrations script --database <database-name>

Running the command above should have created a migration script in the ./sable/<database-name>/scripts directory. You can now take that script and apply it manually to your database.

  • Point Sable to the database and have it run the migration it for you:
bash
sable database update <connection-string> --database <database-name>
sable database update <connection-string> --database <database-name>

Running the command above should have applied the pending migrations to your database.

Add Migration

Ok. All good so far, but you just added a new index to a document and want to update the database. What do you do? Pretty simple. Just add a new migration:

bash
sable migrations add <migration-name> --database <database-name>
sable migrations add <migration-name> --database <database-name>

Running the command above should have created a new migration file in the ./sable/<database-name>/migrations directory.

To apply that migration, just follow one of the database update strategies outlined above one more time.

What's Next?

`,37),p=[e];function t(r,c,i,y,E,d){return a(),n("div",null,p)}const g=s(l,[["render",t]]);export{h as __pageData,g as default}; diff --git a/docs/assets/introduction_getting-started.md.7f2c46f9.lean.js b/docs/assets/introduction_getting-started.md.b6a14f95.lean.js similarity index 58% rename from docs/assets/introduction_getting-started.md.7f2c46f9.lean.js rename to docs/assets/introduction_getting-started.md.b6a14f95.lean.js index 87d1c4b..50e8bca 100644 --- a/docs/assets/introduction_getting-started.md.7f2c46f9.lean.js +++ b/docs/assets/introduction_getting-started.md.b6a14f95.lean.js @@ -1 +1 @@ -import{_ as s,o as a,c as n,Q as o}from"./chunks/framework.b8722102.js";const g=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/getting-started.md","filePath":"introduction/getting-started.md"}'),l={name:"introduction/getting-started.md"},e=o("",37),p=[e];function t(r,c,i,y,E,d){return a(),n("div",null,p)}const h=s(l,[["render",t]]);export{g as __pageData,h as default}; +import{_ as s,o as a,c as n,Q as o}from"./chunks/framework.b8722102.js";const h=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/getting-started.md","filePath":"introduction/getting-started.md"}'),l={name:"introduction/getting-started.md"},e=o("",37),p=[e];function t(r,c,i,y,E,d){return a(),n("div",null,p)}const g=s(l,[["render",t]]);export{h as __pageData,g as default}; diff --git a/docs/guide/existing-project-integration.html b/docs/guide/existing-project-integration.html index c6a33b0..6e8ca83 100644 --- a/docs/guide/existing-project-integration.html +++ b/docs/guide/existing-project-integration.html @@ -7,19 +7,19 @@ - + - - + +
Skip to content

Existing Project Integration

So, you've read the Getting Started guide, and may be wondering how to integrate Sable into an existing project. It's very simple.

Prerequisites

  • If you have yet to do so, make sure to read the Getting Started guide. The process for integrating Sable into an existing project is very similar to what is described there, but with a slight twist, so everything learned there will be applicable for existing projects.
  • Make sure all of your Postgres databases across every environment where your code is running have already converged to the same latest state.

Once those prerequisites are met, you're all set to go.

Application Configuration

  • Ensure support for sable is configured. Your configuration should look something like the following:
c#
using Marten;
 using Oakton;
-using BloombergLP.Sable.Extensions;
-using BloombergLP.Sable.Samples.Core;
+using Sable.Extensions;
+using Sable.Samples.Core;
 using Weasel.Core;
 
 var builder = WebApplication.CreateBuilder(args);
@@ -40,8 +40,8 @@
 
 return await app.RunOaktonCommands(args);
using Marten;
 using Oakton;
-using BloombergLP.Sable.Extensions;
-using BloombergLP.Sable.Samples.Core;
+using Sable.Extensions;
+using Sable.Samples.Core;
 using Weasel.Core;
 
 var builder = WebApplication.CreateBuilder(args);
@@ -61,7 +61,7 @@
 app.MapGet("/", () => "💪🏾");
 
 return await app.RunOaktonCommands(args);

Initialize Migration Infrastructure

Ok. Now that your project is properly configured, what's next? In your project directory, run the following command:

bash
sable init --database <database-name> --schema <schema-name>
sable init --database <database-name> --schema <schema-name>

The default values for the database and schema are Marten and public, respectively. Marten is the name associated with the database for the default configuration. This is important when multiple databases are referenced in the same project.

Running the command above should have created some migration file in the ./sable/<database-name>/migrations directory.

Backfill Initial Migrations

Once the migration infrastructure has been initialized for the Marten database, there's one more thing to do before proceeding. The Postgres databases are already up to date, so we must not apply the newly generated migrations. Instead, we'll just backfill them. Sable maintains a table to keep track of applied migrations in the database. Whenever a new migration is applied, Sable inserts a new record in that table for that migration to ensure it is applied only once. In our case, since the Postgres databases are already up to date, the newly generated migrations have already been applied without Sable, so we'll just backfill them:

bash
sable migrations backfill --database <database-name>
sable migrations backfill --database <database-name>

Running the command above should have created a new migration file in the ./sable/<database-name> directory called <timestamap>_backfill.sql. Apply it to your database. That's all it takes to integrate Sable into an existing project. From this point on, treat the project as if it had been integrated with Sable from the very beginning.

To learn more about how Sable works, see How Sable Works.

- + \ No newline at end of file diff --git a/docs/guide/multi-tenancy-setup.html b/docs/guide/multi-tenancy-setup.html index 241d837..f8efcfe 100644 --- a/docs/guide/multi-tenancy-setup.html +++ b/docs/guide/multi-tenancy-setup.html @@ -7,19 +7,19 @@ - + - - + +
Skip to content

Multi-tenancy Setup

So, you already went through the Getting Started guide, and may be wondering if there's any additional configuration needed for multi-tenancy setups. Given that all Postgres databases for the configured tenants must have identical structures, there's none. Everything you learned in the getting started guide still applies for any single database setup with multi-tenancy configured. As such, a multi-tenancy setup will look something like this:

c#
using Marten;
 using Oakton;
-using BloombergLP.Sable.Extensions;
-using BloombergLP.Sable.Samples.Core;
+using Sable.Extensions;
+using Sable.Samples.Core;
 using Weasel.Core;
 
 var builder = WebApplication.CreateBuilder(args);
@@ -48,8 +48,8 @@
 
 return await app.RunOaktonCommands(args);
using Marten;
 using Oakton;
-using BloombergLP.Sable.Extensions;
-using BloombergLP.Sable.Samples.Core;
+using Sable.Extensions;
+using Sable.Samples.Core;
 using Weasel.Core;
 
 var builder = WebApplication.CreateBuilder(args);
@@ -77,7 +77,7 @@
 app.MapGet("/", () => "💪🏾");
 
 return await app.RunOaktonCommands(args);

Again, given that all Postgres databases for the configured tenants must have identical structures, there's no need to generate a different set of migrations for every single database identifier. So, for the example shown above, you just need to specify the database name as Marten, not books_basic nor books_basic, when running Sable commands. That's it.

See Multi-tencancy Sample for a sample application with a multi-tenancy setup.

To learn more about multi-tenancy in Marten, see Marten Multi-tencancy.

- + \ No newline at end of file diff --git a/docs/guide/multiple-database-setup.html b/docs/guide/multiple-database-setup.html index b54e1c3..df505ba 100644 --- a/docs/guide/multiple-database-setup.html +++ b/docs/guide/multiple-database-setup.html @@ -7,19 +7,19 @@ - + - - + +
Skip to content

Multiple Database Setup

After going through the Getting Started guide, you may be wondering how to manage migrations for a project where multiple databases are configured with Sable. It's pretty simple. Sable will just maintain migrations in separate directories for the configured databases. Let's say your configuration looks something like the following:

c#
using Marten;
 using Oakton;
-using BloombergLP.Sable.Extensions;
-using BloombergLP.Sable.Samples.Core;
+using Sable.Extensions;
+using Sable.Samples.Core;
 using Weasel.Core;
 
 var builder = WebApplication.CreateBuilder(args);
@@ -66,8 +66,8 @@
 
 return await app.RunOaktonCommands(args);
using Marten;
 using Oakton;
-using BloombergLP.Sable.Extensions;
-using BloombergLP.Sable.Samples.Core;
+using Sable.Extensions;
+using Sable.Samples.Core;
 using Weasel.Core;
 
 var builder = WebApplication.CreateBuilder(args);
@@ -113,7 +113,7 @@
 app.MapGet("/", () => "💪🏾");
 
 return await app.RunOaktonCommands(args);

When running a Sable command, just specify for which database you intend to use it for. For instance, in the example above, you would specify the name of the database as either Marten (the default database name) or IOtherDocumentStore. Sable will take care of the rest, and manage migrations for those databases in two separate directories called Marten and IOtherDocumentStore, respectively.

To learn more about multi-database setups in Marten, see Marten Multi-Database Setups.

- + \ No newline at end of file diff --git a/docs/hashmap.json b/docs/hashmap.json index 3b8bd82..026e4fa 100644 --- a/docs/hashmap.json +++ b/docs/hashmap.json @@ -1 +1 @@ -{"readme.md":"85f54f8a","introduction_why-sable.md":"21ebe741","reference_cli.md":"93f35ef2","reference_how-sable-works.md":"46d9baa9","index.md":"3716e34c","guide_multi-tenancy-setup.md":"48845541","guide_multiple-database-setup.md":"d5602c5e","introduction_getting-started.md":"7f2c46f9","guide_existing-project-integration.md":"dfe1a60e"} +{"readme.md":"85f54f8a","guide_multi-tenancy-setup.md":"ce8c0d82","guide_multiple-database-setup.md":"e2e4ff14","reference_how-sable-works.md":"46d9baa9","introduction_why-sable.md":"21ebe741","reference_cli.md":"93f35ef2","introduction_getting-started.md":"b6a14f95","index.md":"3716e34c","guide_existing-project-integration.md":"3810c307"} diff --git a/docs/index.html b/docs/index.html index 0db3660..bde6774 100644 --- a/docs/index.html +++ b/docs/index.html @@ -7,17 +7,17 @@ - + - +
Skip to content

Sable

Database Migrations for Marten

Simple, easy to use database migration management tool for Marten.

Sable logo
- + \ No newline at end of file diff --git a/docs/introduction/getting-started.html b/docs/introduction/getting-started.html index d99a133..ca1f6d3 100644 --- a/docs/introduction/getting-started.html +++ b/docs/introduction/getting-started.html @@ -7,19 +7,19 @@ - + - - + + -
Skip to content

Getting Started

Prerequisites

Before starting, ensure the following prerequisites are met:

  • Docker is installed. To learn why Docker is needed, see How Sable Works.
  • The Sable dotnet tool is installed by running the following command:
bash
dotnet tool install -g BloombergLP.Sable.Cli
dotnet tool install -g BloombergLP.Sable.Cli

See .NET Tools to learn more about how .NET tools work.

Application Configuration

This guide assumes you have experience with configuring Marten along with its command line tooling support in .NET projects. If that is not the case, please take a look at the following guides before proceeding:

Ok. Let's move on. We're going to integrate Sable into a new project. To learn how to integrate Sable into an exiting project, see Existing Project Integration after going through this guide. The process is similar, so everything learned here will be applicable for existing projects as well.

  • Create a new project:
bash
dotnet new webapi
dotnet new webapi
  • Configure marten along with its command line tooling support.
  • Add Sable integration support to the project:
bash
dotnet add package BloombergLP.Sable
dotnet add package BloombergLP.Sable

Now the fun part. Replace whatever overload of AddMarten you're using with AddMartenWithSableSupport. That's all there is to it for the integration.

At this point, you should have a configuration that looks something like this:

c#
using Marten;
+    
Skip to content

Getting Started

Prerequisites

Before starting, ensure the following prerequisites are met:

  • Docker is installed. To learn why Docker is needed, see How Sable Works.
  • The Sable dotnet tool is installed by running the following command:
bash
dotnet tool install -g Sable.Cli
dotnet tool install -g Sable.Cli

See .NET Tools to learn more about how .NET tools work.

Application Configuration

This guide assumes you have experience with configuring Marten along with its command line tooling support in .NET projects. If that is not the case, please take a look at the following guides before proceeding:

Ok. Let's move on. We're going to integrate Sable into a new project. To learn how to integrate Sable into an exiting project, see Existing Project Integration after going through this guide. The process is similar, so everything learned here will be applicable for existing projects as well.

  • Create a new project:
bash
dotnet new webapi
dotnet new webapi
  • Configure marten along with its command line tooling support.
  • Add Sable integration support to the project:
bash
dotnet add package Sable
dotnet add package Sable

Now the fun part. Replace whatever overload of AddMarten you're using with AddMartenWithSableSupport. That's all there is to it for the integration.

At this point, you should have a configuration that looks something like this:

c#
using Marten;
 using Oakton;
-using BloombergLP.Sable.Extensions;
-using BloombergLP.Sable.Samples.Core;
+using Sable.Extensions;
+using Sable.Samples.Core;
 using Weasel.Core;
 
 var builder = WebApplication.CreateBuilder(args);
@@ -40,8 +40,8 @@
 
 return await app.RunOaktonCommands(args);
using Marten;
 using Oakton;
-using BloombergLP.Sable.Extensions;
-using BloombergLP.Sable.Samples.Core;
+using Sable.Extensions;
+using Sable.Samples.Core;
 using Weasel.Core;
 
 var builder = WebApplication.CreateBuilder(args);
@@ -61,7 +61,7 @@
 app.MapGet("/", () => "💪🏾");
 
 return await app.RunOaktonCommands(args);

Initialize Migration Infrastructure

Ok. Now that your project is properly configured, what's next? In your project directory, run the following command:

bash
sable init --database <database-name> --schema <schema-name>
sable init --database <database-name> --schema <schema-name>

The default values for the database and schema names are Marten and public, respectively. Marten is the name associated with the database for the default configuration. This is important when multiple databases are used in the same project.

Running the command above should have created some migration files in the ./sable/<database-name>/migrations directory.

Update Database

Now, to update the database, follow either one of the following strategies:

  • Create a migration script that you can then apply manually:
bash
sable migrations script --database <database-name>
sable migrations script --database <database-name>

Running the command above should have created a migration script in the ./sable/<database-name>/scripts directory. You can now take that script and apply it manually to your database.

  • Point Sable to the database and have it run the migration it for you:
bash
sable database update <connection-string> --database <database-name>
sable database update <connection-string> --database <database-name>

Running the command above should have applied the pending migrations to your database.

Add Migration

Ok. All good so far, but you just added a new index to a document and want to update the database. What do you do? Pretty simple. Just add a new migration:

bash
sable migrations add <migration-name> --database <database-name>
sable migrations add <migration-name> --database <database-name>

Running the command above should have created a new migration file in the ./sable/<database-name>/migrations directory.

To apply that migration, just follow one of the database update strategies outlined above one more time.

What's Next?

- + \ No newline at end of file diff --git a/docs/introduction/why-sable.html b/docs/introduction/why-sable.html index 0ad811e..40dfc64 100644 --- a/docs/introduction/why-sable.html +++ b/docs/introduction/why-sable.html @@ -7,17 +7,17 @@ - + - +
Skip to content

Why Sable?

The Marten team has done a phenomenal job with providing the foundational infrastructure required for managing database migrations. The command line tooling for that is made available via the Marten.CommandLine package, and works just fine. With a connection string that is sufficiently privileged to execute migration scripts, the marten-patch and marten-apply commands can easily be used to carry out the process. However, in a corporate environment like Bloomberg, this approach is not feasible. But why not? Well, for local development, it's not an issue, but for other environments like dev, alpha, beta, and prod, we've encountered some limitations because of the following reasons:

  • There's a standard process for executing database migrations scripts. An engineer can't just point to a database to run migrations, but needs to submit a ticket that must be approved by a manager/team lead before the script can be executed.
  • An application will often be deployed to multiple environments in a sequential deployment pipeline (e.g., dev -> alpha -> beta -> prod). Furthermore, these deployments won't happen in a compressed time frame. You want to test things in one environment before proceeding to the next, so it might take at least a week before moving from one environment the next. As a result, a lot of questions/concerns will surface:
    • How to know which scripts have already been applied to which environments?
    • How to make sure scripts are applied in the same order for each environment in the deployment pipeline?
    • How to guard against human errors like applying a script in an environment more than once? Errors like this can lead to costly outcomes like an accidentally dropped table.

Sable solves all of these problem by taking a simple, intuitive, and minimally-invasive approach. Curious to know how it works? See How Sable Works to learn more.

- + \ No newline at end of file diff --git a/docs/reference/cli.html b/docs/reference/cli.html index d3f97c9..a4d6c43 100644 --- a/docs/reference/cli.html +++ b/docs/reference/cli.html @@ -7,17 +7,17 @@ - + - +
Skip to content

Command Line Interface

sable init

Initialize the migration infrastructure for a database.

Usage

bash
sable init [OPTIONS]
sable init [OPTIONS]

Options

OptionDescription
-p, --project <project-file-path>Path to the project file of the Marten project. Defaults to using the project file in the current directory if it's the only one in there.
-d, --database <database-name>Which database to use. Defaults to the Marten database.
-s, --schema <schema-name>Name of the database schema. Defaults to the public schema.
-c, --container-options <options-file-path>Path to a JSON file that contains options for building a custom Postgres container that is used as the shadow database for migration management. See How Sable Works to learn more.

sable migrations add

Add a new migration for a database.

Usage

bash
sable migrations add <migration-name> [OPTIONS]
sable migrations add <migration-name> [OPTIONS]

Options

OptionDescription
-p, --project <project-file-path>Path to the project file of the Marten project. Defaults to using the project file in the current directory if it's the only one in there.
-d, --database <database-name>Which database to use. Defaults to the Marten database.
-c, --container-options <options-file-path>Path to a JSON file that contains options for building a custom Postgres container that is used as the shadow database for migration management. See How Sable Works to learn more.
--no-transaction-wrapperBy default, when embedding a migration as part of a larger, aggregate migration script, Sable will wrap it in an anynomous function block to ensure it is executed idemtotently. Additionally, that code block will then be wrapped in a trasaction block to ensure the entire migration is executed in a single atomic operation. However, some Postgres statements must not be executed within a trasaction. For a migration that contains those type of statements, this flag must be set to avoid running into issues when generating migration scripts. This option isreserved for advanced use cases. Do not use it unless you know what you are doing.
--no-idempotence-wrapperBy default, when embedding a migration as part of a larger, aggregate migration script, Sable will wrap it in an anynomous function block to ensure it is executed idemtotently. However, some Postgres statements must not be executed within such a block. For a migration that contains those type of statements, this flag must be set to avoid running into issues when generating migration scripts. Additionally, given that those statements will execute outside of indempotent context, they must be made to be indempotent (e.g., CREATE INDEX CONCURRENTLY IF NOT EXISTS my_index ON my_table (column_name); instead of CREATE INDEX CONCURRENTLY my_index ON my_table (column_name);). This option isreserved for advanced use cases. Do not use it unless you know what you are doing.

sable migrations script

Create an idempotent migration script from existing migrations that can be used to bring a database up to date.

Usage

bash
sable migrations script  [OPTIONS]
sable migrations script  [OPTIONS]

Options

OptionDescription
-p, --project <project-file-path>Path to the project file of the Marten project. Defaults to using the project file in the current directory if it's the only one in there.
-d, --database <database-name>Which database to use. Defaults to the Marten database.
-f, --from <migration-identifier>Id or name of the first migration that should be included in the script. Defaults to the first migration that was generated.
-t, --to <migration-identifier>Id or name of the last migration that should be included in the script. Defaults to the last migration that was generated.
-o, --output <output-file-path>Path of the file to save the script to. Defaults to a path within the sable directory tree.

sable migrations backfill

For an existing database that is already up to date, and for which the migration infrastructure has newly been initialized, backfill the newly created migrations.

Usage

bash
sable migrations backfill  [OPTIONS]
sable migrations backfill  [OPTIONS]

Options

OptionDescription
-p, --project <project-file-path>Path to the project file of the Marten project. Defaults to using the project file in the current directory if it's the only one in there.
-d, --database <database-name>Which database to use. Defaults to the Marten database.
-o, --output <output-file-path>Path of the file to save the script to. Defaults to a path within the sable directory tree.

sable database update

Use pending migrations to bring a database up to date.

Usage

bash
sable database update <connection-string>  [OPTIONS]
sable database update <connection-string>  [OPTIONS]

Options

OptionDescription
-p, --project <project-file-path>Path to the project file of the Marten project. Defaults to using the project file in the current directory if it's the only one in there.
-d, --database <database-name>Which database to use. Defaults to the Marten database.
-m, --migration <migration-identifier>Id or name of the latest migration that should be applied. Defaults to the last migration that was generated.
- + \ No newline at end of file diff --git a/docs/reference/how-sable-works.html b/docs/reference/how-sable-works.html index c109bdb..1f91184 100644 --- a/docs/reference/how-sable-works.html +++ b/docs/reference/how-sable-works.html @@ -7,10 +7,10 @@ - + - + @@ -125,7 +125,7 @@ END $$; COMMIT;

If a record already exists in the table for a migration, It won't be applied. Otherwise, applying the migration as well as recording that it has been applied in the migration table will execute in the same database transaction.

- + \ No newline at end of file diff --git a/samples/BloombergLP.Sable.Samples.Core/Book.cs b/samples/Sable.Samples.Core/Book.cs similarity index 84% rename from samples/BloombergLP.Sable.Samples.Core/Book.cs rename to samples/Sable.Samples.Core/Book.cs index 8302d2c..b31873e 100644 --- a/samples/BloombergLP.Sable.Samples.Core/Book.cs +++ b/samples/Sable.Samples.Core/Book.cs @@ -1,7 +1,7 @@ // Copyright 2024 Bloomberg Finance L.P. // Distributed under the terms of the MIT license. -namespace BloombergLP.Sable.Samples.Core; +namespace Sable.Samples.Core; public class Book { diff --git a/samples/BloombergLP.Sable.Samples.Core/IOtherDocumentStore.cs b/samples/Sable.Samples.Core/IOtherDocumentStore.cs similarity index 80% rename from samples/BloombergLP.Sable.Samples.Core/IOtherDocumentStore.cs rename to samples/Sable.Samples.Core/IOtherDocumentStore.cs index ee8d753..5e8c5b7 100644 --- a/samples/BloombergLP.Sable.Samples.Core/IOtherDocumentStore.cs +++ b/samples/Sable.Samples.Core/IOtherDocumentStore.cs @@ -3,7 +3,7 @@ using Marten; -namespace BloombergLP.Sable.Samples.Core; +namespace Sable.Samples.Core; public interface IOtherDocumentStore : IDocumentStore { diff --git a/samples/BloombergLP.Sable.Samples.Core/Order.cs b/samples/Sable.Samples.Core/Order.cs similarity index 85% rename from samples/BloombergLP.Sable.Samples.Core/Order.cs rename to samples/Sable.Samples.Core/Order.cs index ee2afb4..e6be785 100644 --- a/samples/BloombergLP.Sable.Samples.Core/Order.cs +++ b/samples/Sable.Samples.Core/Order.cs @@ -1,7 +1,7 @@ // Copyright 2024 Bloomberg Finance L.P. // Distributed under the terms of the MIT license. -namespace BloombergLP.Sable.Samples.Core; +namespace Sable.Samples.Core; public class Order { diff --git a/samples/BloombergLP.Sable.Samples.Core/BloombergLP.Sable.Samples.Core.csproj b/samples/Sable.Samples.Core/Sable.Samples.Core.csproj similarity index 80% rename from samples/BloombergLP.Sable.Samples.Core/BloombergLP.Sable.Samples.Core.csproj rename to samples/Sable.Samples.Core/Sable.Samples.Core.csproj index 68f6e6a..46569b7 100644 --- a/samples/BloombergLP.Sable.Samples.Core/BloombergLP.Sable.Samples.Core.csproj +++ b/samples/Sable.Samples.Core/Sable.Samples.Core.csproj @@ -11,7 +11,7 @@ - + diff --git a/samples/BloombergLP.Sable.Samples.GettingStarted/Program.cs b/samples/Sable.Samples.GettingStarted/Program.cs similarity index 91% rename from samples/BloombergLP.Sable.Samples.GettingStarted/Program.cs rename to samples/Sable.Samples.GettingStarted/Program.cs index 88665d0..fac3a66 100644 --- a/samples/BloombergLP.Sable.Samples.GettingStarted/Program.cs +++ b/samples/Sable.Samples.GettingStarted/Program.cs @@ -1,8 +1,8 @@ // Copyright 2024 Bloomberg Finance L.P. // Distributed under the terms of the MIT license. -using BloombergLP.Sable.Extensions; -using BloombergLP.Sable.Samples.Core; +using Sable.Extensions; +using Sable.Samples.Core; using Marten; using Oakton; using Weasel.Core; diff --git a/samples/BloombergLP.Sable.Samples.GettingStarted/Properties/launchSettings.json b/samples/Sable.Samples.GettingStarted/Properties/launchSettings.json similarity index 100% rename from samples/BloombergLP.Sable.Samples.GettingStarted/Properties/launchSettings.json rename to samples/Sable.Samples.GettingStarted/Properties/launchSettings.json diff --git a/samples/BloombergLP.Sable.Samples.GettingStarted/BloombergLP.Sable.Samples.GettingStarted.csproj b/samples/Sable.Samples.GettingStarted/Sable.Samples.GettingStarted.csproj similarity index 61% rename from samples/BloombergLP.Sable.Samples.GettingStarted/BloombergLP.Sable.Samples.GettingStarted.csproj rename to samples/Sable.Samples.GettingStarted/Sable.Samples.GettingStarted.csproj index 396c24f..7b5431d 100644 --- a/samples/BloombergLP.Sable.Samples.GettingStarted/BloombergLP.Sable.Samples.GettingStarted.csproj +++ b/samples/Sable.Samples.GettingStarted/Sable.Samples.GettingStarted.csproj @@ -5,7 +5,7 @@ - + diff --git a/samples/BloombergLP.Sable.Samples.GettingStarted/appsettings.Development.json b/samples/Sable.Samples.GettingStarted/appsettings.Development.json similarity index 100% rename from samples/BloombergLP.Sable.Samples.GettingStarted/appsettings.Development.json rename to samples/Sable.Samples.GettingStarted/appsettings.Development.json diff --git a/samples/BloombergLP.Sable.Samples.GettingStarted/appsettings.json b/samples/Sable.Samples.GettingStarted/appsettings.json similarity index 100% rename from samples/BloombergLP.Sable.Samples.GettingStarted/appsettings.json rename to samples/Sable.Samples.GettingStarted/appsettings.json diff --git a/samples/BloombergLP.Sable.Samples.GettingStarted/sable/Marten/20240130030104_backfill.sql b/samples/Sable.Samples.GettingStarted/sable/Marten/20240130030104_backfill.sql similarity index 100% rename from samples/BloombergLP.Sable.Samples.GettingStarted/sable/Marten/20240130030104_backfill.sql rename to samples/Sable.Samples.GettingStarted/sable/Marten/20240130030104_backfill.sql diff --git a/samples/BloombergLP.Sable.Samples.GettingStarted/sable/Marten/migrations/20240130030018_InfrastructureSetup.sql b/samples/Sable.Samples.GettingStarted/sable/Marten/migrations/20240130030018_InfrastructureSetup.sql similarity index 100% rename from samples/BloombergLP.Sable.Samples.GettingStarted/sable/Marten/migrations/20240130030018_InfrastructureSetup.sql rename to samples/Sable.Samples.GettingStarted/sable/Marten/migrations/20240130030018_InfrastructureSetup.sql diff --git a/samples/BloombergLP.Sable.Samples.GettingStarted/sable/Marten/migrations/20240130030021_Initial.sql b/samples/Sable.Samples.GettingStarted/sable/Marten/migrations/20240130030021_Initial.sql similarity index 100% rename from samples/BloombergLP.Sable.Samples.GettingStarted/sable/Marten/migrations/20240130030021_Initial.sql rename to samples/Sable.Samples.GettingStarted/sable/Marten/migrations/20240130030021_Initial.sql diff --git a/samples/BloombergLP.Sable.Samples.GettingStarted/sable/Marten/migrations/20240130030245_M1.sql b/samples/Sable.Samples.GettingStarted/sable/Marten/migrations/20240130030245_M1.sql similarity index 100% rename from samples/BloombergLP.Sable.Samples.GettingStarted/sable/Marten/migrations/20240130030245_M1.sql rename to samples/Sable.Samples.GettingStarted/sable/Marten/migrations/20240130030245_M1.sql diff --git a/samples/BloombergLP.Sable.Samples.GettingStarted/sable/Marten/migrations/20240130031301_M2.sql b/samples/Sable.Samples.GettingStarted/sable/Marten/migrations/20240130031301_M2.sql similarity index 100% rename from samples/BloombergLP.Sable.Samples.GettingStarted/sable/Marten/migrations/20240130031301_M2.sql rename to samples/Sable.Samples.GettingStarted/sable/Marten/migrations/20240130031301_M2.sql diff --git a/samples/BloombergLP.Sable.Samples.GettingStarted/sable/Marten/schema.txt b/samples/Sable.Samples.GettingStarted/sable/Marten/schema.txt similarity index 100% rename from samples/BloombergLP.Sable.Samples.GettingStarted/sable/Marten/schema.txt rename to samples/Sable.Samples.GettingStarted/sable/Marten/schema.txt diff --git a/samples/BloombergLP.Sable.Samples.GettingStarted/sable/Marten/scripts/20240130031331_script.sql b/samples/Sable.Samples.GettingStarted/sable/Marten/scripts/20240130031331_script.sql similarity index 100% rename from samples/BloombergLP.Sable.Samples.GettingStarted/sable/Marten/scripts/20240130031331_script.sql rename to samples/Sable.Samples.GettingStarted/sable/Marten/scripts/20240130031331_script.sql diff --git a/samples/BloombergLP.Sable.Samples.MultiTenancy/Program.cs b/samples/Sable.Samples.MultiTenancy/Program.cs similarity index 92% rename from samples/BloombergLP.Sable.Samples.MultiTenancy/Program.cs rename to samples/Sable.Samples.MultiTenancy/Program.cs index f6c3205..177dc93 100644 --- a/samples/BloombergLP.Sable.Samples.MultiTenancy/Program.cs +++ b/samples/Sable.Samples.MultiTenancy/Program.cs @@ -1,8 +1,8 @@ // Copyright 2024 Bloomberg Finance L.P. // Distributed under the terms of the MIT license. -using BloombergLP.Sable.Extensions; -using BloombergLP.Sable.Samples.Core; +using Sable.Extensions; +using Sable.Samples.Core; using Marten; using Oakton; using Weasel.Core; diff --git a/samples/BloombergLP.Sable.Samples.MultiTenancy/Properties/launchSettings.json b/samples/Sable.Samples.MultiTenancy/Properties/launchSettings.json similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultiTenancy/Properties/launchSettings.json rename to samples/Sable.Samples.MultiTenancy/Properties/launchSettings.json diff --git a/samples/BloombergLP.Sable.Samples.MultiTenancy/BloombergLP.Sable.Samples.MultiTenancy.csproj b/samples/Sable.Samples.MultiTenancy/Sable.Samples.MultiTenancy.csproj similarity index 61% rename from samples/BloombergLP.Sable.Samples.MultiTenancy/BloombergLP.Sable.Samples.MultiTenancy.csproj rename to samples/Sable.Samples.MultiTenancy/Sable.Samples.MultiTenancy.csproj index 396c24f..7b5431d 100644 --- a/samples/BloombergLP.Sable.Samples.MultiTenancy/BloombergLP.Sable.Samples.MultiTenancy.csproj +++ b/samples/Sable.Samples.MultiTenancy/Sable.Samples.MultiTenancy.csproj @@ -5,7 +5,7 @@ - + diff --git a/samples/BloombergLP.Sable.Samples.MultiTenancy/appsettings.Development.json b/samples/Sable.Samples.MultiTenancy/appsettings.Development.json similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultiTenancy/appsettings.Development.json rename to samples/Sable.Samples.MultiTenancy/appsettings.Development.json diff --git a/samples/BloombergLP.Sable.Samples.MultiTenancy/appsettings.json b/samples/Sable.Samples.MultiTenancy/appsettings.json similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultiTenancy/appsettings.json rename to samples/Sable.Samples.MultiTenancy/appsettings.json diff --git a/samples/BloombergLP.Sable.Samples.MultiTenancy/sable/Marten/migrations/20231013223111_InfrastructureSetup.sql b/samples/Sable.Samples.MultiTenancy/sable/Marten/migrations/20231013223111_InfrastructureSetup.sql similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultiTenancy/sable/Marten/migrations/20231013223111_InfrastructureSetup.sql rename to samples/Sable.Samples.MultiTenancy/sable/Marten/migrations/20231013223111_InfrastructureSetup.sql diff --git a/samples/BloombergLP.Sable.Samples.MultiTenancy/sable/Marten/migrations/20231013223114_Initial.sql b/samples/Sable.Samples.MultiTenancy/sable/Marten/migrations/20231013223114_Initial.sql similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultiTenancy/sable/Marten/migrations/20231013223114_Initial.sql rename to samples/Sable.Samples.MultiTenancy/sable/Marten/migrations/20231013223114_Initial.sql diff --git a/samples/BloombergLP.Sable.Samples.MultiTenancy/sable/Marten/schema.txt b/samples/Sable.Samples.MultiTenancy/sable/Marten/schema.txt similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultiTenancy/sable/Marten/schema.txt rename to samples/Sable.Samples.MultiTenancy/sable/Marten/schema.txt diff --git a/samples/BloombergLP.Sable.Samples.MultipleDatabases/Program.cs b/samples/Sable.Samples.MultipleDatabases/Program.cs similarity index 95% rename from samples/BloombergLP.Sable.Samples.MultipleDatabases/Program.cs rename to samples/Sable.Samples.MultipleDatabases/Program.cs index d384bd5..67c2b91 100644 --- a/samples/BloombergLP.Sable.Samples.MultipleDatabases/Program.cs +++ b/samples/Sable.Samples.MultipleDatabases/Program.cs @@ -1,8 +1,8 @@ // Copyright 2024 Bloomberg Finance L.P. // Distributed under the terms of the MIT license. -using BloombergLP.Sable.Extensions; -using BloombergLP.Sable.Samples.Core; +using Sable.Extensions; +using Sable.Samples.Core; using Marten; using Oakton; using Weasel.Core; diff --git a/samples/BloombergLP.Sable.Samples.MultipleDatabases/Properties/launchSettings.json b/samples/Sable.Samples.MultipleDatabases/Properties/launchSettings.json similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultipleDatabases/Properties/launchSettings.json rename to samples/Sable.Samples.MultipleDatabases/Properties/launchSettings.json diff --git a/samples/BloombergLP.Sable.Samples.MultipleDatabases/BloombergLP.Sable.Samples.MultipleDatabases.csproj b/samples/Sable.Samples.MultipleDatabases/Sable.Samples.MultipleDatabases.csproj similarity index 61% rename from samples/BloombergLP.Sable.Samples.MultipleDatabases/BloombergLP.Sable.Samples.MultipleDatabases.csproj rename to samples/Sable.Samples.MultipleDatabases/Sable.Samples.MultipleDatabases.csproj index 396c24f..7b5431d 100644 --- a/samples/BloombergLP.Sable.Samples.MultipleDatabases/BloombergLP.Sable.Samples.MultipleDatabases.csproj +++ b/samples/Sable.Samples.MultipleDatabases/Sable.Samples.MultipleDatabases.csproj @@ -5,7 +5,7 @@ - + diff --git a/samples/BloombergLP.Sable.Samples.MultipleDatabases/appsettings.Development.json b/samples/Sable.Samples.MultipleDatabases/appsettings.Development.json similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultipleDatabases/appsettings.Development.json rename to samples/Sable.Samples.MultipleDatabases/appsettings.Development.json diff --git a/samples/BloombergLP.Sable.Samples.MultipleDatabases/appsettings.json b/samples/Sable.Samples.MultipleDatabases/appsettings.json similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultipleDatabases/appsettings.json rename to samples/Sable.Samples.MultipleDatabases/appsettings.json diff --git a/samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/20231018224532_backfill.sql b/samples/Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/20231018224532_backfill.sql similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/20231018224532_backfill.sql rename to samples/Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/20231018224532_backfill.sql diff --git a/samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/migrations/20231018224343_InfrastructureSetup.sql b/samples/Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/migrations/20231018224343_InfrastructureSetup.sql similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/migrations/20231018224343_InfrastructureSetup.sql rename to samples/Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/migrations/20231018224343_InfrastructureSetup.sql diff --git a/samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/migrations/20231018224348_Initial.sql b/samples/Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/migrations/20231018224348_Initial.sql similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/migrations/20231018224348_Initial.sql rename to samples/Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/migrations/20231018224348_Initial.sql diff --git a/samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/migrations/20231018224546_RemoveIndex.sql b/samples/Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/migrations/20231018224546_RemoveIndex.sql similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/migrations/20231018224546_RemoveIndex.sql rename to samples/Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/migrations/20231018224546_RemoveIndex.sql diff --git a/samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/migrations/20231018224612_Custom.sql b/samples/Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/migrations/20231018224612_Custom.sql similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/migrations/20231018224612_Custom.sql rename to samples/Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/migrations/20231018224612_Custom.sql diff --git a/samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/schema.txt b/samples/Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/schema.txt similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/schema.txt rename to samples/Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/schema.txt diff --git a/samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/scripts/20231018224817_script.sql b/samples/Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/scripts/20231018224817_script.sql similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/scripts/20231018224817_script.sql rename to samples/Sable.Samples.MultipleDatabases/sable/IOtherDocumentStore/scripts/20231018224817_script.sql diff --git a/samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/Marten/migrations/20231013224417_InfrastructureSetup.sql b/samples/Sable.Samples.MultipleDatabases/sable/Marten/migrations/20231013224417_InfrastructureSetup.sql similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/Marten/migrations/20231013224417_InfrastructureSetup.sql rename to samples/Sable.Samples.MultipleDatabases/sable/Marten/migrations/20231013224417_InfrastructureSetup.sql diff --git a/samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/Marten/migrations/20231013224420_Initial.sql b/samples/Sable.Samples.MultipleDatabases/sable/Marten/migrations/20231013224420_Initial.sql similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/Marten/migrations/20231013224420_Initial.sql rename to samples/Sable.Samples.MultipleDatabases/sable/Marten/migrations/20231013224420_Initial.sql diff --git a/samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/Marten/migrations/20231013224536_AddIndexOnName.sql b/samples/Sable.Samples.MultipleDatabases/sable/Marten/migrations/20231013224536_AddIndexOnName.sql similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/Marten/migrations/20231013224536_AddIndexOnName.sql rename to samples/Sable.Samples.MultipleDatabases/sable/Marten/migrations/20231013224536_AddIndexOnName.sql diff --git a/samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/Marten/schema.txt b/samples/Sable.Samples.MultipleDatabases/sable/Marten/schema.txt similarity index 100% rename from samples/BloombergLP.Sable.Samples.MultipleDatabases/sable/Marten/schema.txt rename to samples/Sable.Samples.MultipleDatabases/sable/Marten/schema.txt diff --git a/src/BloombergLP.Sable.Cli/AnsiConsoleLogger.cs b/src/Sable.Cli/AnsiConsoleLogger.cs similarity index 95% rename from src/BloombergLP.Sable.Cli/AnsiConsoleLogger.cs rename to src/Sable.Cli/AnsiConsoleLogger.cs index 516c464..53beb8b 100644 --- a/src/BloombergLP.Sable.Cli/AnsiConsoleLogger.cs +++ b/src/Sable.Cli/AnsiConsoleLogger.cs @@ -3,7 +3,7 @@ using Spectre.Console; -namespace BloombergLP.Sable.Cli; +namespace Sable.Cli; public class AnsiConsoleLogger : IConsoleLogger { diff --git a/src/BloombergLP.Sable.Cli/Commands/AddMigrationCommand.cs b/src/Sable.Cli/Commands/AddMigrationCommand.cs similarity index 97% rename from src/BloombergLP.Sable.Cli/Commands/AddMigrationCommand.cs rename to src/Sable.Cli/Commands/AddMigrationCommand.cs index 00fbe92..5d5041f 100644 --- a/src/BloombergLP.Sable.Cli/Commands/AddMigrationCommand.cs +++ b/src/Sable.Cli/Commands/AddMigrationCommand.cs @@ -3,14 +3,14 @@ using System.ComponentModel; using System.Text.RegularExpressions; -using BloombergLP.Sable.Cli.Options; -using BloombergLP.Sable.Cli.Settings; -using BloombergLP.Sable.Cli.Utilities; +using Sable.Cli.Options; +using Sable.Cli.Settings; +using Sable.Cli.Utilities; using Newtonsoft.Json; using Spectre.Console; using Spectre.Console.Cli; -namespace BloombergLP.Sable.Cli.Commands; +namespace Sable.Cli.Commands; public class AddMigrationCommand : AsyncCommand { diff --git a/src/BloombergLP.Sable.Cli/Commands/BackfillMigrationsCommand.cs b/src/Sable.Cli/Commands/BackfillMigrationsCommand.cs similarity index 95% rename from src/BloombergLP.Sable.Cli/Commands/BackfillMigrationsCommand.cs rename to src/Sable.Cli/Commands/BackfillMigrationsCommand.cs index f71f731..c21b238 100644 --- a/src/BloombergLP.Sable.Cli/Commands/BackfillMigrationsCommand.cs +++ b/src/Sable.Cli/Commands/BackfillMigrationsCommand.cs @@ -2,12 +2,12 @@ // Distributed under the terms of the MIT license. using System.ComponentModel; -using BloombergLP.Sable.Cli.Settings; -using BloombergLP.Sable.Cli.Utilities; +using Sable.Cli.Settings; +using Sable.Cli.Utilities; using Spectre.Console; using Spectre.Console.Cli; -namespace BloombergLP.Sable.Cli.Commands; +namespace Sable.Cli.Commands; public class BackfillMigrationsCommand : AsyncCommand { diff --git a/src/BloombergLP.Sable.Cli/Commands/CreateMigrationScriptCommand.cs b/src/Sable.Cli/Commands/CreateMigrationScriptCommand.cs similarity index 96% rename from src/BloombergLP.Sable.Cli/Commands/CreateMigrationScriptCommand.cs rename to src/Sable.Cli/Commands/CreateMigrationScriptCommand.cs index 4605206..218d74f 100644 --- a/src/BloombergLP.Sable.Cli/Commands/CreateMigrationScriptCommand.cs +++ b/src/Sable.Cli/Commands/CreateMigrationScriptCommand.cs @@ -2,12 +2,12 @@ // Distributed under the terms of the MIT license. using System.ComponentModel; -using BloombergLP.Sable.Cli.Settings; -using BloombergLP.Sable.Cli.Utilities; +using Sable.Cli.Settings; +using Sable.Cli.Utilities; using Spectre.Console; using Spectre.Console.Cli; -namespace BloombergLP.Sable.Cli.Commands; +namespace Sable.Cli.Commands; public class CreateMigrationScriptCommand : AsyncCommand { diff --git a/src/BloombergLP.Sable.Cli/Commands/InitializeInfrastructureCommand.cs b/src/Sable.Cli/Commands/InitializeInfrastructureCommand.cs similarity index 94% rename from src/BloombergLP.Sable.Cli/Commands/InitializeInfrastructureCommand.cs rename to src/Sable.Cli/Commands/InitializeInfrastructureCommand.cs index 7377562..e518a01 100644 --- a/src/BloombergLP.Sable.Cli/Commands/InitializeInfrastructureCommand.cs +++ b/src/Sable.Cli/Commands/InitializeInfrastructureCommand.cs @@ -2,14 +2,14 @@ // Distributed under the terms of the MIT license. using System.ComponentModel; -using BloombergLP.Sable.Cli.Options; -using BloombergLP.Sable.Cli.Settings; -using BloombergLP.Sable.Cli.Utilities; +using Sable.Cli.Options; +using Sable.Cli.Settings; +using Sable.Cli.Utilities; using Newtonsoft.Json; using Spectre.Console; using Spectre.Console.Cli; -namespace BloombergLP.Sable.Cli.Commands; +namespace Sable.Cli.Commands; public class InitializeInfrastructureCommand : AsyncCommand { diff --git a/src/BloombergLP.Sable.Cli/Commands/UpdateDatabaseCommand.cs b/src/Sable.Cli/Commands/UpdateDatabaseCommand.cs similarity index 94% rename from src/BloombergLP.Sable.Cli/Commands/UpdateDatabaseCommand.cs rename to src/Sable.Cli/Commands/UpdateDatabaseCommand.cs index 0c7a7e8..95ff40a 100644 --- a/src/BloombergLP.Sable.Cli/Commands/UpdateDatabaseCommand.cs +++ b/src/Sable.Cli/Commands/UpdateDatabaseCommand.cs @@ -2,13 +2,13 @@ // Distributed under the terms of the MIT license. using System.ComponentModel; -using BloombergLP.Sable.Cli.Settings; -using BloombergLP.Sable.Cli.Utilities; +using Sable.Cli.Settings; +using Sable.Cli.Utilities; using Npgsql; using Spectre.Console; using Spectre.Console.Cli; -namespace BloombergLP.Sable.Cli.Commands; +namespace Sable.Cli.Commands; public class UpdateDatabaseCommand : AsyncCommand { diff --git a/src/BloombergLP.Sable.Cli/Extensions/EnumerableExtensions.cs b/src/Sable.Cli/Extensions/EnumerableExtensions.cs similarity index 93% rename from src/BloombergLP.Sable.Cli/Extensions/EnumerableExtensions.cs rename to src/Sable.Cli/Extensions/EnumerableExtensions.cs index 2e1bcd1..6a78ade 100644 --- a/src/BloombergLP.Sable.Cli/Extensions/EnumerableExtensions.cs +++ b/src/Sable.Cli/Extensions/EnumerableExtensions.cs @@ -1,7 +1,7 @@ // Copyright 2024 Bloomberg Finance L.P. // Distributed under the terms of the MIT license. -namespace BloombergLP.Sable.Cli.Extensions; +namespace Sable.Cli.Extensions; public static class EnumerableExtensions { diff --git a/src/BloombergLP.Sable.Cli/IConsoleLogger.cs b/src/Sable.Cli/IConsoleLogger.cs similarity index 85% rename from src/BloombergLP.Sable.Cli/IConsoleLogger.cs rename to src/Sable.Cli/IConsoleLogger.cs index 46537d7..70d9ad7 100644 --- a/src/BloombergLP.Sable.Cli/IConsoleLogger.cs +++ b/src/Sable.Cli/IConsoleLogger.cs @@ -1,7 +1,7 @@ // Copyright 2024 Bloomberg Finance L.P. // Distributed under the terms of the MIT license. -namespace BloombergLP.Sable.Cli; +namespace Sable.Cli; public interface IConsoleLogger { diff --git a/src/BloombergLP.Sable.Cli/IMartenMigrationManager.cs b/src/Sable.Cli/IMartenMigrationManager.cs similarity index 91% rename from src/BloombergLP.Sable.Cli/IMartenMigrationManager.cs rename to src/Sable.Cli/IMartenMigrationManager.cs index 6f7dc9f..755f9fe 100644 --- a/src/BloombergLP.Sable.Cli/IMartenMigrationManager.cs +++ b/src/Sable.Cli/IMartenMigrationManager.cs @@ -1,9 +1,9 @@ // Copyright 2024 Bloomberg Finance L.P. // Distributed under the terms of the MIT license. -using BloombergLP.Sable.Cli.Options; +using Sable.Cli.Options; -namespace BloombergLP.Sable.Cli; +namespace Sable.Cli; public interface IMartenMigrationManager { diff --git a/src/BloombergLP.Sable.Cli/MartenMigrationManager.cs b/src/Sable.Cli/MartenMigrationManager.cs similarity index 98% rename from src/BloombergLP.Sable.Cli/MartenMigrationManager.cs rename to src/Sable.Cli/MartenMigrationManager.cs index 3e7856d..0bf2068 100644 --- a/src/BloombergLP.Sable.Cli/MartenMigrationManager.cs +++ b/src/Sable.Cli/MartenMigrationManager.cs @@ -2,16 +2,16 @@ // Distributed under the terms of the MIT license. using System.Text; -using BloombergLP.Sable.Cli.Extensions; -using BloombergLP.Sable.Cli.Options; -using BloombergLP.Sable.Cli.Utilities; +using Sable.Cli.Extensions; +using Sable.Cli.Options; +using Sable.Cli.Utilities; using CliWrap; using DotNet.Testcontainers.Builders; using DotNet.Testcontainers.Containers; using Npgsql; using Scriban; -namespace BloombergLP.Sable.Cli; +namespace Sable.Cli; public class MartenMigrationManager : IMartenMigrationManager { diff --git a/src/BloombergLP.Sable.Cli/Migration.cs b/src/Sable.Cli/Migration.cs similarity index 99% rename from src/BloombergLP.Sable.Cli/Migration.cs rename to src/Sable.Cli/Migration.cs index ef425ac..0df8931 100644 --- a/src/BloombergLP.Sable.Cli/Migration.cs +++ b/src/Sable.Cli/Migration.cs @@ -3,7 +3,7 @@ using Scriban; -namespace BloombergLP.Sable.Cli; +namespace Sable.Cli; public class Migration { diff --git a/src/BloombergLP.Sable.Cli/Options/PostgresContainerOptions.cs b/src/Sable.Cli/Options/PostgresContainerOptions.cs similarity index 95% rename from src/BloombergLP.Sable.Cli/Options/PostgresContainerOptions.cs rename to src/Sable.Cli/Options/PostgresContainerOptions.cs index 00d5591..f8b21f6 100644 --- a/src/BloombergLP.Sable.Cli/Options/PostgresContainerOptions.cs +++ b/src/Sable.Cli/Options/PostgresContainerOptions.cs @@ -2,7 +2,7 @@ // Distributed under the terms of the MIT license. -namespace BloombergLP.Sable.Cli.Options; +namespace Sable.Cli.Options; public class PostgresContainerOptions { diff --git a/src/BloombergLP.Sable.Cli/Program.cs b/src/Sable.Cli/Program.cs similarity index 96% rename from src/BloombergLP.Sable.Cli/Program.cs rename to src/Sable.Cli/Program.cs index a277ba4..ff25642 100644 --- a/src/BloombergLP.Sable.Cli/Program.cs +++ b/src/Sable.Cli/Program.cs @@ -1,8 +1,8 @@ // Copyright 2024 Bloomberg Finance L.P. // Distributed under the terms of the MIT license. -using BloombergLP.Sable.Cli; -using BloombergLP.Sable.Cli.Commands; +using Sable.Cli; +using Sable.Cli.Commands; using Microsoft.Extensions.DependencyInjection; using Spectre.Console; using Spectre.Console.Cli; diff --git a/src/BloombergLP.Sable.Cli/Properties/launchSettings.json b/src/Sable.Cli/Properties/launchSettings.json similarity index 100% rename from src/BloombergLP.Sable.Cli/Properties/launchSettings.json rename to src/Sable.Cli/Properties/launchSettings.json diff --git a/src/BloombergLP.Sable.Cli/ReadinessProbeWaitStrategy.cs b/src/Sable.Cli/ReadinessProbeWaitStrategy.cs similarity index 96% rename from src/BloombergLP.Sable.Cli/ReadinessProbeWaitStrategy.cs rename to src/Sable.Cli/ReadinessProbeWaitStrategy.cs index c368aac..7b70df0 100644 --- a/src/BloombergLP.Sable.Cli/ReadinessProbeWaitStrategy.cs +++ b/src/Sable.Cli/ReadinessProbeWaitStrategy.cs @@ -5,7 +5,7 @@ using DotNet.Testcontainers.Containers; using Npgsql; -namespace BloombergLP.Sable.Cli; +namespace Sable.Cli; public class ReadinessProbeWaitStrategy : IWaitUntil { diff --git a/src/BloombergLP.Sable.Cli/BloombergLP.Sable.Cli.csproj b/src/Sable.Cli/Sable.Cli.csproj similarity index 92% rename from src/BloombergLP.Sable.Cli/BloombergLP.Sable.Cli.csproj rename to src/Sable.Cli/Sable.Cli.csproj index ce9575b..4a22f80 100644 --- a/src/BloombergLP.Sable.Cli/BloombergLP.Sable.Cli.csproj +++ b/src/Sable.Cli/Sable.Cli.csproj @@ -19,7 +19,7 @@ - + diff --git a/src/BloombergLP.Sable.Cli/SableCliConstants.cs b/src/Sable.Cli/SableCliConstants.cs similarity index 95% rename from src/BloombergLP.Sable.Cli/SableCliConstants.cs rename to src/Sable.Cli/SableCliConstants.cs index 184682c..6c711de 100644 --- a/src/BloombergLP.Sable.Cli/SableCliConstants.cs +++ b/src/Sable.Cli/SableCliConstants.cs @@ -1,7 +1,7 @@ // Copyright 2024 Bloomberg Finance L.P. // Distributed under the terms of the MIT license. -namespace BloombergLP.Sable.Cli; +namespace Sable.Cli; public static class SableCliConstants { diff --git a/src/BloombergLP.Sable.Cli/Settings/ProjectSettings.cs b/src/Sable.Cli/Settings/ProjectSettings.cs similarity index 97% rename from src/BloombergLP.Sable.Cli/Settings/ProjectSettings.cs rename to src/Sable.Cli/Settings/ProjectSettings.cs index faf673e..9cb5592 100644 --- a/src/BloombergLP.Sable.Cli/Settings/ProjectSettings.cs +++ b/src/Sable.Cli/Settings/ProjectSettings.cs @@ -5,7 +5,7 @@ using Spectre.Console; using Spectre.Console.Cli; -namespace BloombergLP.Sable.Cli.Settings; +namespace Sable.Cli.Settings; public class ProjectSettings : CommandSettings { diff --git a/src/BloombergLP.Sable.Cli/Templates.cs b/src/Sable.Cli/Templates.cs similarity index 98% rename from src/BloombergLP.Sable.Cli/Templates.cs rename to src/Sable.Cli/Templates.cs index 937090c..0a6a92d 100644 --- a/src/BloombergLP.Sable.Cli/Templates.cs +++ b/src/Sable.Cli/Templates.cs @@ -1,7 +1,7 @@ // Copyright 2024 Bloomberg Finance L.P. // Distributed under the terms of the MIT license. -namespace BloombergLP.Sable.Cli; +namespace Sable.Cli; public static class Templates { diff --git a/src/BloombergLP.Sable.Cli/TypeRegistrar.cs b/src/Sable.Cli/TypeRegistrar.cs similarity index 98% rename from src/BloombergLP.Sable.Cli/TypeRegistrar.cs rename to src/Sable.Cli/TypeRegistrar.cs index cf3ee47..b6cfbcd 100644 --- a/src/BloombergLP.Sable.Cli/TypeRegistrar.cs +++ b/src/Sable.Cli/TypeRegistrar.cs @@ -4,7 +4,7 @@ using Microsoft.Extensions.DependencyInjection; using Spectre.Console.Cli; -namespace BloombergLP.Sable.Cli; +namespace Sable.Cli; public sealed class TypeRegistrar : ITypeRegistrar { diff --git a/src/BloombergLP.Sable.Cli/Utilities/FileSystemUtilities.cs b/src/Sable.Cli/Utilities/FileSystemUtilities.cs similarity index 95% rename from src/BloombergLP.Sable.Cli/Utilities/FileSystemUtilities.cs rename to src/Sable.Cli/Utilities/FileSystemUtilities.cs index 9e3e7e6..9333b6d 100644 --- a/src/BloombergLP.Sable.Cli/Utilities/FileSystemUtilities.cs +++ b/src/Sable.Cli/Utilities/FileSystemUtilities.cs @@ -1,7 +1,7 @@ // Copyright 2024 Bloomberg Finance L.P. // Distributed under the terms of the MIT license. -namespace BloombergLP.Sable.Cli.Utilities; +namespace Sable.Cli.Utilities; public static class FileSystemUtilities { diff --git a/src/BloombergLP.Sable.Cli/Utilities/ValidationUtilities.cs b/src/Sable.Cli/Utilities/ValidationUtilities.cs similarity index 94% rename from src/BloombergLP.Sable.Cli/Utilities/ValidationUtilities.cs rename to src/Sable.Cli/Utilities/ValidationUtilities.cs index 6e28c36..bf08c30 100644 --- a/src/BloombergLP.Sable.Cli/Utilities/ValidationUtilities.cs +++ b/src/Sable.Cli/Utilities/ValidationUtilities.cs @@ -3,7 +3,7 @@ using Spectre.Console; -namespace BloombergLP.Sable.Cli.Utilities; +namespace Sable.Cli.Utilities; public static class ValidationUtilities { diff --git a/src/BloombergLP.Sable.Cli/containerOptions.upstream.json b/src/Sable.Cli/containerOptions.upstream.json similarity index 100% rename from src/BloombergLP.Sable.Cli/containerOptions.upstream.json rename to src/Sable.Cli/containerOptions.upstream.json diff --git a/src/BloombergLP.Sable/Extensions/ServiceCollectionExtensions.cs b/src/Sable/Extensions/ServiceCollectionExtensions.cs similarity index 99% rename from src/BloombergLP.Sable/Extensions/ServiceCollectionExtensions.cs rename to src/Sable/Extensions/ServiceCollectionExtensions.cs index 7770c45..7f7cecb 100644 --- a/src/BloombergLP.Sable/Extensions/ServiceCollectionExtensions.cs +++ b/src/Sable/Extensions/ServiceCollectionExtensions.cs @@ -5,7 +5,7 @@ using Microsoft.Extensions.DependencyInjection; using Weasel.Core; -namespace BloombergLP.Sable.Extensions; +namespace Sable.Extensions; public static class ServiceCollectionExtensions { diff --git a/src/BloombergLP.Sable/BloombergLP.Sable.csproj b/src/Sable/Sable.csproj similarity index 100% rename from src/BloombergLP.Sable/BloombergLP.Sable.csproj rename to src/Sable/Sable.csproj diff --git a/src/BloombergLP.Sable/SableConstants.cs b/src/Sable/SableConstants.cs similarity index 88% rename from src/BloombergLP.Sable/SableConstants.cs rename to src/Sable/SableConstants.cs index 347013c..a1a0aa8 100644 --- a/src/BloombergLP.Sable/SableConstants.cs +++ b/src/Sable/SableConstants.cs @@ -1,7 +1,7 @@ // Copyright 2024 Bloomberg Finance L.P. // Distributed under the terms of the MIT license. -namespace BloombergLP.Sable; +namespace Sable; public static class SableConstants { diff --git a/tests/BloombergLP.Sable.Cli.Tests/FileSystemUtilitiesTests.cs b/tests/Sable.Cli.Tests/FileSystemUtilitiesTests.cs similarity index 93% rename from tests/BloombergLP.Sable.Cli.Tests/FileSystemUtilitiesTests.cs rename to tests/Sable.Cli.Tests/FileSystemUtilitiesTests.cs index 44fac65..8bd0db3 100644 --- a/tests/BloombergLP.Sable.Cli.Tests/FileSystemUtilitiesTests.cs +++ b/tests/Sable.Cli.Tests/FileSystemUtilitiesTests.cs @@ -2,10 +2,10 @@ // Distributed under the terms of the MIT license. using System.Runtime.InteropServices; -using BloombergLP.Sable.Cli.Utilities; +using Sable.Cli.Utilities; using Xunit; -namespace BloombergLP.Sable.Cli.Tests; +namespace Sable.Cli.Tests; public class FileSystemUtilitiesTests { diff --git a/tests/BloombergLP.Sable.Tests/BloombergLP.Sable.Tests.csproj b/tests/Sable.Cli.Tests/Sable.Cli.Tests.csproj similarity index 70% rename from tests/BloombergLP.Sable.Tests/BloombergLP.Sable.Tests.csproj rename to tests/Sable.Cli.Tests/Sable.Cli.Tests.csproj index d3779d9..92dcb29 100644 --- a/tests/BloombergLP.Sable.Tests/BloombergLP.Sable.Tests.csproj +++ b/tests/Sable.Cli.Tests/Sable.Cli.Tests.csproj @@ -6,7 +6,7 @@ - + diff --git a/tests/BloombergLP.Sable.Tests/IOtherDatabase.cs b/tests/Sable.Tests/IOtherDatabase.cs similarity index 82% rename from tests/BloombergLP.Sable.Tests/IOtherDatabase.cs rename to tests/Sable.Tests/IOtherDatabase.cs index 7156b07..610a5f3 100644 --- a/tests/BloombergLP.Sable.Tests/IOtherDatabase.cs +++ b/tests/Sable.Tests/IOtherDatabase.cs @@ -3,7 +3,7 @@ using Marten; -namespace BloombergLP.Sable.Tests; +namespace Sable.Tests; public interface IOtherDatabase : IDocumentStore { diff --git a/tests/BloombergLP.Sable.Cli.Tests/BloombergLP.Sable.Cli.Tests.csproj b/tests/Sable.Tests/Sable.Tests.csproj similarity index 68% rename from tests/BloombergLP.Sable.Cli.Tests/BloombergLP.Sable.Cli.Tests.csproj rename to tests/Sable.Tests/Sable.Tests.csproj index 5d49c2e..f0e07b1 100644 --- a/tests/BloombergLP.Sable.Cli.Tests/BloombergLP.Sable.Cli.Tests.csproj +++ b/tests/Sable.Tests/Sable.Tests.csproj @@ -6,7 +6,7 @@ - + diff --git a/tests/BloombergLP.Sable.Tests/ServiceRegistrationTests.cs b/tests/Sable.Tests/ServiceRegistrationTests.cs similarity index 98% rename from tests/BloombergLP.Sable.Tests/ServiceRegistrationTests.cs rename to tests/Sable.Tests/ServiceRegistrationTests.cs index da54247..ec8a66c 100644 --- a/tests/BloombergLP.Sable.Tests/ServiceRegistrationTests.cs +++ b/tests/Sable.Tests/ServiceRegistrationTests.cs @@ -1,13 +1,13 @@ // Copyright 2024 Bloomberg Finance L.P. // Distributed under the terms of the MIT license. -using BloombergLP.Sable.Extensions; +using Sable.Extensions; using Marten; using Microsoft.Extensions.DependencyInjection; using Weasel.Core; using Xunit; -namespace BloombergLP.Sable.Tests; +namespace Sable.Tests; public class ServiceRegistrationTests {