diff --git a/azure-pipeline - Crm.Hubspot.yml b/azure-pipeline - Crm.Hubspot.yml index 98c7b071..37766c1c 100644 --- a/azure-pipeline - Crm.Hubspot.yml +++ b/azure-pipeline - Crm.Hubspot.yml @@ -1,8 +1,8 @@ trigger: branches: include: - - main-v16 - - v16/dev + - main-v17 + - v17/dev paths: include: - src/Umbraco.Cms.Integrations.Crm.Hubspot/** @@ -16,8 +16,18 @@ variables: project: 'src/$(projectName)/$(projectName).csproj' buildPlatform: 'Any CPU' buildConfiguration: 'Release' + productGroup: 'DXP' + productVersion: 'v17' + DT_API_KEY: $(dtApiKey) + DT_BASE_URL: $(dtBaseUrl) steps: +- task: UseDotNet@2 + displayName: 'Use SDK version 10.0.100' + inputs: + packageType: 'sdk' + version: '10.0.100' + - task: NuGetToolInstaller@1 displayName: 'Install NuGet' @@ -25,15 +35,9 @@ steps: displayName: 'NuGet Restore' inputs: command: 'restore' - feedsToUse: 'select' + feedsToUse: 'config' projects: '$(project)' - includeNuGetOrg: true - -- task: UseDotNet@2 - displayName: 'Use SDK version 9.0.203' - inputs: - packageType: 'sdk' - version: '9.0.203' + nugetConfigPath: 'NuGet.config' - task: VSBuild@1 displayName: 'Build Project' @@ -57,3 +61,26 @@ steps: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop' publishLocation: 'Container' + +# Generate/upload SBOM with cdxgen +- script: | + cd $(Build.SourcesDirectory) + npm install --global @cyclonedx/cdxgen + displayName: 'Install cdxgen' + +- script: | + mkdir -p $(Build.ArtifactStagingDirectory)/bom + cd $(Build.SourcesDirectory) + + cdxgen --recurse --output $(Build.ArtifactStagingDirectory)\bom\bom.json --json-pretty --project-group "$(productGroup)" --project-name "$(projectName)" --project-version "$(productVersion)" --server-url "$(DT_BASE_URL)" --api-key "$(DT_API_KEY)" --deep + displayName: 'Generate & Upload SBOM with cdxgen' + env: + DT_API_KEY: $(DT_API_KEY) + DT_BASE_URL: $(DT_BASE_URL) + +# Publish SBOM artifact +- task: PublishPipelineArtifact@1 + displayName: 'Publish SBOM Artifact' + inputs: + targetPath: $(Build.ArtifactStagingDirectory)/bom + artifactName: SBOM diff --git a/azure-pipeline - Search.Algolia.yml b/azure-pipeline - Search.Algolia.yml index 0a86b725..035d94ee 100644 --- a/azure-pipeline - Search.Algolia.yml +++ b/azure-pipeline - Search.Algolia.yml @@ -1,8 +1,8 @@ trigger: branches: include: - - main-v16 - - v16/dev + - main-v17 + - v17/dev paths: include: - src/Umbraco.Cms.Integrations.Search.Algolia/** @@ -16,8 +16,18 @@ variables: project: 'src/$(projectName)/$(projectName).csproj' buildPlatform: 'Any CPU' buildConfiguration: 'Release' + productGroup: 'DXP' + productVersion: 'v17' + DT_API_KEY: $(dtApiKey) + DT_BASE_URL: $(dtBaseUrl) steps: +- task: UseDotNet@2 + displayName: 'Use SDK version 10.0.100' + inputs: + packageType: 'sdk' + version: '10.0.100' + - task: NuGetToolInstaller@1 displayName: 'Install NuGet' @@ -25,14 +35,10 @@ steps: displayName: 'NuGet Restore' inputs: command: 'restore' - feedsToUse: 'select' + feedsToUse: 'config' projects: '$(project)' - includeNuGetOrg: true -- task: UseDotNet@2 - displayName: 'Use SDK version 9.0.203' - inputs: - packageType: 'sdk' - version: '9.0.203' + nugetConfigPath: 'NuGet.config' + - task: VSBuild@1 displayName: 'Build Project' inputs: @@ -55,3 +61,26 @@ steps: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop' publishLocation: 'Container' + +# Generate/upload SBOM with cdxgen +- script: | + cd $(Build.SourcesDirectory) + npm install --global @cyclonedx/cdxgen + displayName: 'Install cdxgen' + +- script: | + mkdir -p $(Build.ArtifactStagingDirectory)/bom + cd $(Build.SourcesDirectory) + + cdxgen --recurse --output $(Build.ArtifactStagingDirectory)\bom\bom.json --json-pretty --project-group "$(productGroup)" --project-name "$(projectName)" --project-version "$(productVersion)" --server-url "$(DT_BASE_URL)" --api-key "$(DT_API_KEY)" --deep + displayName: 'Generate & Upload SBOM with cdxgen' + env: + DT_API_KEY: $(DT_API_KEY) + DT_BASE_URL: $(DT_BASE_URL) + +# Publish SBOM artifact +- task: PublishPipelineArtifact@1 + displayName: 'Publish SBOM Artifact' + inputs: + targetPath: $(Build.ArtifactStagingDirectory)/bom + artifactName: SBOM diff --git a/examples/Umbraco.Cms.Integrations.Testsite.V17/Umbraco.Cms.Integrations.Testsite.V17.csproj b/examples/Umbraco.Cms.Integrations.Testsite.V17/Umbraco.Cms.Integrations.Testsite.V17.csproj index b4335488..0f80132e 100644 --- a/examples/Umbraco.Cms.Integrations.Testsite.V17/Umbraco.Cms.Integrations.Testsite.V17.csproj +++ b/examples/Umbraco.Cms.Integrations.Testsite.V17/Umbraco.Cms.Integrations.Testsite.V17.csproj @@ -8,6 +8,7 @@ + diff --git a/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Api/Management/Controllers/GetFormsPagedController.cs b/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Api/Management/Controllers/GetFormsPagedController.cs index 98462086..1f79cbd3 100644 --- a/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Api/Management/Controllers/GetFormsPagedController.cs +++ b/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Api/Management/Controllers/GetFormsPagedController.cs @@ -1,6 +1,7 @@ using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.WebUtilities; using Microsoft.Extensions.Options; using Umbraco.Cms.Api.Common.Builders; using Umbraco.Cms.Integrations.Crm.ActiveCampaign.Configuration; @@ -21,15 +22,13 @@ public GetFormsByPageController(IOptions options, IHttpC [ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status403Forbidden)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] - public async Task GetForms([FromQuery] int? page = 1) + public async Task GetForms([FromQuery] int? page = 1, [FromQuery] string? searchQuery = "") { try { var client = HttpClientFactory.CreateClient(Constants.FormsHttpClient); - var requestUriString = page == 1 - ? $"{client.BaseAddress}{ApiPath}&limit={Constants.DefaultPageSize}" - : $"{client.BaseAddress}{ApiPath}&limit={Constants.DefaultPageSize}&offset={(page - 1) * Constants.DefaultPageSize}"; + var requestUriString = BuildRequestUri(client.BaseAddress.ToString(), page ?? 1, searchQuery); var requestMessage = new HttpRequestMessage { @@ -48,5 +47,22 @@ public async Task GetForms([FromQuery] int? page = 1) .Build()); } } + + private string BuildRequestUri(string baseAddress, int page, string searchQuery) + { + var uri = $"{baseAddress}{ApiPath}?limit={Constants.DefaultPageSize}"; + + if (page > 1) + { + uri = QueryHelpers.AddQueryString(uri, "offset", ((page - 1) * Constants.DefaultPageSize).ToString()); + } + + if (!string.IsNullOrWhiteSpace(searchQuery)) + { + uri = QueryHelpers.AddQueryString(uri, "search", searchQuery); + } + + return uri; + } } } diff --git a/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/generated/types.gen.ts b/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/generated/types.gen.ts index ce59171a..3b5cc235 100644 --- a/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/generated/types.gen.ts +++ b/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/generated/types.gen.ts @@ -62,6 +62,7 @@ export type GetFormsData = { path?: never; query?: { page?: number; + searchQuery?: string; }; url: '/umbraco/activecampaign-forms/management/api/v1/forms'; }; diff --git a/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/src/context/activecampaign-forms.context.ts b/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/src/context/activecampaign-forms.context.ts index d2f4b91b..2d36bd54 100644 --- a/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/src/context/activecampaign-forms.context.ts +++ b/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/src/context/activecampaign-forms.context.ts @@ -28,8 +28,8 @@ export class ActiveCampaignFormsContext extends UmbControllerBase { this.#configurationModel.setValue(data); } - async getForms(page?: number) { - return await this.#repository.getForms(page); + async getForms(page?: number, searchQuery?: string) { + return await this.#repository.getForms(page, searchQuery); } async getForm(id: string) { diff --git a/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/src/modal/activecampaign-forms-modal.element.ts b/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/src/modal/activecampaign-forms-modal.element.ts index 0d9e1d45..f5451646 100644 --- a/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/src/modal/activecampaign-forms-modal.element.ts +++ b/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/src/modal/activecampaign-forms-modal.element.ts @@ -29,6 +29,11 @@ export default class ActiveCampaignFormsModalElement @state() _totalPages = 1; + @state() + _searchQuery = ""; + + #filterTimeout?: NodeJS.Timeout; + constructor() { super(); @@ -47,6 +52,13 @@ export default class ActiveCampaignFormsModalElement this.#checkApiAccess(); } + disconnectedCallback() { + super.disconnectedCallback(); + if (this.#filterTimeout) { + clearTimeout(this.#filterTimeout); + } + } + async #checkApiAccess() { if (!this.#activecampaignFormsContext || !this.#configurationModel) return; @@ -58,10 +70,10 @@ export default class ActiveCampaignFormsModalElement await this.#loadForms(); } - async #loadForms(page?: number) { + async #loadForms(page?: number, searchQuery?: string) { this._loading = true; - const { data } = await this.#activecampaignFormsContext.getForms(page); + const { data } = await this.#activecampaignFormsContext.getForms(page, searchQuery); if (!data) { this._loading = false; return; @@ -75,21 +87,26 @@ export default class ActiveCampaignFormsModalElement this._loading = false; } - #handleFilterInput(event: UUIInputEvent) { + async #handleFilterInput(event: UUIInputEvent) { let query = (event.target.value as string) || ''; query = query.toLowerCase(); + this._searchQuery = query; - const result = !query - ? this._forms - : this._forms.filter((form) => form.name.toLowerCase().includes(query)); + // Clear existing timeout + if (this.#filterTimeout) { + clearTimeout(this.#filterTimeout); + } - this._filteredForms = result; + this.#filterTimeout = setTimeout(async () => { + this._currentPageNumber = 1; + await this.#loadForms(this._currentPageNumber, this._searchQuery); + }, 500); } async #onPageChange(event: UUIPaginationEvent) { this._currentPageNumber = event.target?.current; - await this.#loadForms(this._currentPageNumber); + await this.#loadForms(this._currentPageNumber, this._searchQuery); } #renderPagination() { diff --git a/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/src/property-editor/form-picker-property-editor.element.ts b/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/src/property-editor/form-picker-property-editor.element.ts index 73c5c217..c4c0e5ed 100644 --- a/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/src/property-editor/form-picker-property-editor.element.ts +++ b/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/src/property-editor/form-picker-property-editor.element.ts @@ -15,7 +15,6 @@ export default class ActiveCampaignFormPickerElement extends UmbElementMixin(Lit @property({ type: String }) public value = ""; - @state() private _form: FormDtoModel = { diff --git a/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/src/repository/activecampaign-forms.repository.ts b/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/src/repository/activecampaign-forms.repository.ts index e4f07951..d45cc4db 100644 --- a/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/src/repository/activecampaign-forms.repository.ts +++ b/src/Umbraco.Cms.Integrations.Crm.ActiveCampaign/Client/src/repository/activecampaign-forms.repository.ts @@ -28,8 +28,8 @@ export class ActiveCampaignFormsRepository extends UmbControllerBase { return { data }; } - async getForms(page?: number) { - const { data, error } = await tryExecute(this, ActiveCampaignForms.getForms({ query: { page } })); + async getForms(page?: number, searchQuery?: string) { + const { data, error } = await tryExecute(this, ActiveCampaignFormsService.getForms({ query: { page, searchQuery } })); if (error || !data) { return { error }; diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Api/Management/Controllers/GetAccessTokenController.cs b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Api/Management/Controllers/GetAccessTokenController.cs index 51783df2..e8488b05 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Api/Management/Controllers/GetAccessTokenController.cs +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Api/Management/Controllers/GetAccessTokenController.cs @@ -16,9 +16,9 @@ public class GetAccessTokenController : HubspotFormsControllerBase public GetAccessTokenController( IOptions settingsOptions, - AuthorizationImplementationFactory authorizationImplementationFactory) + IHubspotAuthorizationServiceFactory authorizationServiceFactory) : base(settingsOptions) - => _authorizationService = authorizationImplementationFactory(Settings.UseUmbracoAuthorization); + => _authorizationService = authorizationServiceFactory.GetAuthorizationService(Settings.UseUmbracoAuthorization); [HttpPost("access-token", Name = Constants.OperationIdentifiers.GetAccessToken)] [ProducesResponseType(typeof(string), StatusCodes.Status200OK)] diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Api/Management/Controllers/GetAuthorizationUrlController.cs b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Api/Management/Controllers/GetAuthorizationUrlController.cs index d3f5f3ba..5009e202 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Api/Management/Controllers/GetAuthorizationUrlController.cs +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Api/Management/Controllers/GetAuthorizationUrlController.cs @@ -16,8 +16,8 @@ public class GetAuthorizationUrlController : HubspotFormsControllerBase public GetAuthorizationUrlController( IOptions settingsOptions, - AuthorizationImplementationFactory authorizationImplementationFactory) - : base(settingsOptions) => _authorizationService = authorizationImplementationFactory(Settings.UseUmbracoAuthorization); + IHubspotAuthorizationServiceFactory authorizationServiceFactory) + : base(settingsOptions) => _authorizationService = authorizationServiceFactory.GetAuthorizationService(Settings.UseUmbracoAuthorization); [HttpGet("authorization-url", Name = Constants.OperationIdentifiers.GetAuthorizationUrl)] [ProducesResponseType(typeof(string), StatusCodes.Status200OK)] diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Api/Management/Controllers/RefreshAccessTokenController.cs b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Api/Management/Controllers/RefreshAccessTokenController.cs index b5ea1b2c..74a945c5 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Api/Management/Controllers/RefreshAccessTokenController.cs +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Api/Management/Controllers/RefreshAccessTokenController.cs @@ -4,7 +4,6 @@ using Microsoft.Extensions.Options; using Umbraco.Cms.Integrations.Crm.Hubspot.Configuration; using Umbraco.Cms.Integrations.Crm.Hubspot.Services; -using static Umbraco.Cms.Integrations.Crm.Hubspot.HubspotComposer; namespace Umbraco.Cms.Integrations.Crm.Hubspot.Api.Management.Controllers { @@ -15,8 +14,8 @@ public class RefreshAccessTokenController : HubspotFormsControllerBase public RefreshAccessTokenController( IOptions settingsOptions, - AuthorizationImplementationFactory authorizationImplementationFactory) - : base(settingsOptions) => _authorizationService = authorizationImplementationFactory(Settings.UseUmbracoAuthorization); + IHubspotAuthorizationServiceFactory authorizationServiceFactory) + : base(settingsOptions) => _authorizationService = authorizationServiceFactory.GetAuthorizationService(Settings.UseUmbracoAuthorization); [HttpPost("refresh", Name = Constants.OperationIdentifiers.RefreshAccessToken)] [ProducesResponseType(typeof(string), StatusCodes.Status200OK)] diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Api/Management/Controllers/ValidateAccessTokenController.cs b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Api/Management/Controllers/ValidateAccessTokenController.cs index 72552639..453ab097 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Api/Management/Controllers/ValidateAccessTokenController.cs +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Api/Management/Controllers/ValidateAccessTokenController.cs @@ -21,12 +21,12 @@ public ValidateAccessTokenController( IOptions settingsOptions, IHttpClientFactory httpClientFactory, ITokenService tokenService, - IHubspotAuthorizationService authorizationService) + IHubspotAuthorizationServiceFactory authorizationServiceFactory) : base(settingsOptions) { _httpClientFactory = httpClientFactory; _tokenService = tokenService; - _authorizationService = authorizationService; + _authorizationService = authorizationServiceFactory.GetAuthorizationService(settingsOptions.Value.UseUmbracoAuthorization); } [HttpGet("validate", Name = Constants.OperationIdentifiers.ValidateAccessToken)] diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/.npmrc b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/.npmrc new file mode 100644 index 00000000..02d09dc3 --- /dev/null +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/.npmrc @@ -0,0 +1 @@ +@umbraco-cms:registry=https://www.myget.org/F/umbracoprereleases/npm/ diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/generated/client.gen.ts b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/generated/client.gen.ts index 8d45663f..4500dc20 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/generated/client.gen.ts +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/generated/client.gen.ts @@ -1,7 +1,8 @@ // This file is auto-generated by @hey-api/openapi-ts -import type { ClientOptions } from './types.gen'; -import { type Config, type ClientOptions as DefaultClientOptions, createClient, createConfig } from '@hey-api/client-fetch'; +import { type ClientOptions, type Config, createClient, createConfig } from '@hey-api/client-fetch'; + +import type { ClientOptions as ClientOptions2 } from './types.gen'; /** * The `createClientConfig()` function will be called on client initialization @@ -11,9 +12,9 @@ import { type Config, type ClientOptions as DefaultClientOptions, createClient, * `setConfig()`. This is useful for example if you're using Next.js * to ensure your client always has the correct values. */ -export type CreateClientConfig = (override?: Config) => Config & T>; +export type CreateClientConfig = (override?: Config) => Config & T>; -export const client = createClient(createConfig({ - baseUrl: 'http://localhost:30450', +export const client = createClient(createConfig({ + baseUrl: 'http://localhost:28157', throwOnError: true -})); \ No newline at end of file +})); diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/generated/index.ts b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/generated/index.ts index 31a9f07e..fcc8d64a 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/generated/index.ts +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/generated/index.ts @@ -1,4 +1,5 @@ // This file is auto-generated by @hey-api/openapi-ts + export * from './types.gen'; export * from './client.gen'; -export * from './sdk.gen'; \ No newline at end of file +export * from './sdk.gen'; diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/generated/sdk.gen.ts b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/generated/sdk.gen.ts index 1ef586e4..96cae3ae 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/generated/sdk.gen.ts +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/generated/sdk.gen.ts @@ -1,10 +1,11 @@ // This file is auto-generated by @hey-api/openapi-ts -import type { Options as ClientOptions, TDataShape, Client } from '@hey-api/client-fetch'; -import type { PostGetAccessTokenData, PostGetAccessTokenResponse, GetAuthorizationUrlData, GetAuthorizationUrlResponse, GetCheckConfigurationData, GetCheckConfigurationResponse, GetFormsByApiKeyData, GetFormsByApiKeyResponse, GetFormsOAuthData, GetFormsOAuthResponse, PostRefreshAccessTokenData, PostRefreshAccessTokenResponse, PostRevokeAccessTokenData, GetValidateAccessTokenData, GetValidateAccessTokenResponse } from './types.gen'; -import { client as _heyApiClient } from './client.gen'; +import type { Client, Options as Options2, TDataShape } from '@hey-api/client-fetch'; -export type Options = ClientOptions & { +import { client } from './client.gen'; +import type { GetAuthorizationUrlData, GetAuthorizationUrlErrors, GetAuthorizationUrlResponses, GetCheckConfigurationData, GetCheckConfigurationErrors, GetCheckConfigurationResponses, GetFormsByApiKeyData, GetFormsByApiKeyErrors, GetFormsByApiKeyResponses, GetFormsOAuthData, GetFormsOAuthErrors, GetFormsOAuthResponses, GetValidateAccessTokenData, GetValidateAccessTokenErrors, GetValidateAccessTokenResponses, PostGetAccessTokenData, PostGetAccessTokenErrors, PostGetAccessTokenResponses, PostRefreshAccessTokenData, PostRefreshAccessTokenErrors, PostRefreshAccessTokenResponses, PostRevokeAccessTokenData, PostRevokeAccessTokenErrors, PostRevokeAccessTokenResponses } from './types.gen'; + +export type Options = Options2 & { /** * You can provide a client instance returned by `createClient()` instead of * individual options. This might be also useful if you want to implement a @@ -18,9 +19,9 @@ export type Options; }; -export class FormsService { +export class Forms { public static postGetAccessToken(options?: Options) { - return (options?.client ?? _heyApiClient).post({ + return (options?.client ?? client).post({ security: [ { scheme: 'bearer', @@ -37,7 +38,7 @@ export class FormsService { } public static getAuthorizationUrl(options?: Options) { - return (options?.client ?? _heyApiClient).get({ + return (options?.client ?? client).get({ security: [ { scheme: 'bearer', @@ -50,7 +51,7 @@ export class FormsService { } public static getCheckConfiguration(options?: Options) { - return (options?.client ?? _heyApiClient).get({ + return (options?.client ?? client).get({ security: [ { scheme: 'bearer', @@ -63,7 +64,7 @@ export class FormsService { } public static getFormsByApiKey(options?: Options) { - return (options?.client ?? _heyApiClient).get({ + return (options?.client ?? client).get({ security: [ { scheme: 'bearer', @@ -76,7 +77,7 @@ export class FormsService { } public static getFormsOAuth(options?: Options) { - return (options?.client ?? _heyApiClient).get({ + return (options?.client ?? client).get({ security: [ { scheme: 'bearer', @@ -89,7 +90,7 @@ export class FormsService { } public static postRefreshAccessToken(options?: Options) { - return (options?.client ?? _heyApiClient).post({ + return (options?.client ?? client).post({ security: [ { scheme: 'bearer', @@ -102,7 +103,7 @@ export class FormsService { } public static postRevokeAccessToken(options?: Options) { - return (options?.client ?? _heyApiClient).post({ + return (options?.client ?? client).post({ security: [ { scheme: 'bearer', @@ -115,7 +116,7 @@ export class FormsService { } public static getValidateAccessToken(options?: Options) { - return (options?.client ?? _heyApiClient).get({ + return (options?.client ?? client).get({ security: [ { scheme: 'bearer', @@ -126,5 +127,4 @@ export class FormsService { ...options }); } - -} \ No newline at end of file +} diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/generated/types.gen.ts b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/generated/types.gen.ts index 186e749a..499fbac1 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/generated/types.gen.ts +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/generated/types.gen.ts @@ -1,5 +1,9 @@ // This file is auto-generated by @hey-api/openapi-ts +export type ClientOptions = { + baseUrl: 'http://localhost:28157' | (string & {}); +}; + export type ConfigurationTypeModel = { readonly value: string; }; @@ -20,15 +24,11 @@ export type HubspotFormDtoModel = { region: string; }; -export type HubspotFormPickerSettingsModelReadable = { +export type HubspotFormPickerSettingsModel = { isValid: boolean; type: ConfigurationTypeModel; }; -export type HubspotFormPickerSettingsModelWritable = { - isValid: boolean; -}; - export type NotificationHeaderModel = { message: string; category: string; @@ -46,6 +46,11 @@ export type ResponseDtoModel = { forms: Array; }; +export type HubspotFormPickerSettingsModelWritable = { + isValid: boolean; + type: unknown; +}; + export type PostGetAccessTokenData = { body?: OAuthRequestDtoModel; path?: never; @@ -110,7 +115,7 @@ export type GetCheckConfigurationResponses = { /** * OK */ - 200: HubspotFormPickerSettingsModelReadable; + 200: HubspotFormPickerSettingsModel; }; export type GetCheckConfigurationResponse = GetCheckConfigurationResponses[keyof GetCheckConfigurationResponses]; @@ -227,7 +232,3 @@ export type GetValidateAccessTokenResponses = { }; export type GetValidateAccessTokenResponse = GetValidateAccessTokenResponses[keyof GetValidateAccessTokenResponses]; - -export type ClientOptions = { - baseUrl: 'http://localhost:30450' | (string & {}); -}; \ No newline at end of file diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/openapi-ts.config.js b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/openapi-ts.config.js index b9428eb4..162433fe 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/openapi-ts.config.js +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/openapi-ts.config.js @@ -4,7 +4,7 @@ export default defineConfig({ logs: { level: 'debug', }, - input: 'http://localhost:30450/umbraco/swagger/hubspot-forms-management/swagger.json', + input: 'http://localhost:28157/umbraco/swagger/hubspot-forms-management/swagger.json', output: { path: 'generated', }, diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/package-lock.json b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/package-lock.json index b9861332..fad71512 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/package-lock.json +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/package-lock.json @@ -8,11 +8,11 @@ "name": "hubspot", "version": "0.0.0", "devDependencies": { - "@hey-api/client-fetch": "^0.10.0", - "@hey-api/openapi-ts": "0.67.6", + "@hey-api/client-fetch": "^0.13.0", + "@hey-api/openapi-ts": "0.85.0", "@typescript-eslint/eslint-plugin": "^7.13.0", "@typescript-eslint/parser": "^7.13.0", - "@umbraco-cms/backoffice": "^16.0.0", + "@umbraco-cms/backoffice": "17.0.0", "cross-env": "^7.0.3", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", @@ -29,6 +29,9 @@ "engines": { "node": ">=22", "npm": ">=10.9" + }, + "peerDependencies": { + "@umbraco-cms/backoffice": "17.0.0" } }, "node_modules/@esbuild/aix-ppc64": { @@ -535,10 +538,22 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@heximal/expressions": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@heximal/expressions/-/expressions-0.1.5.tgz", + "integrity": "sha512-QdWz9vNrdzi24so9KGEM9w4UYLg1yk+LVvYBEDbw9EY1BzKHITWdtYc55xJ3Zuio0/9Naz/D1YtYlCnfsycNDQ==", + "dev": true, + "license": "BSD 3-Clause", + "peer": true, + "dependencies": { + "tslib": "^2.7.0" + } + }, "node_modules/@hey-api/client-fetch": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@hey-api/client-fetch/-/client-fetch-0.10.2.tgz", - "integrity": "sha512-AGiFYDx+y8VT1wlQ3EbzzZtfU8EfV+hLLRTtr8Y/tjYZaxIECwJagVZf24YzNbtEBXONFV50bwcU1wLVGXe1ow==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@hey-api/client-fetch/-/client-fetch-0.13.1.tgz", + "integrity": "sha512-29jBRYNdxVGlx5oewFgOrkulZckpIpBIRHth3uHFn1PrL2ucMy52FvWOY3U3dVx2go1Z3kUmMi6lr07iOpUqqA==", + "deprecated": "Starting with v0.73.0, this package is bundled directly inside @hey-api/openapi-ts.", "dev": true, "license": "MIT", "funding": { @@ -548,10 +563,26 @@ "@hey-api/openapi-ts": "< 2" } }, + "node_modules/@hey-api/codegen-core": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@hey-api/codegen-core/-/codegen-core-0.2.0.tgz", + "integrity": "sha512-c7VjBy/8ed0EVLNgaeS9Xxams1Tuv/WK/b4xXH3Qr4wjzYeJUtxOcoP8YdwNLavqKP8pGiuctjX2Z1Pwc4jMgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=22.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/hey-api" + }, + "peerDependencies": { + "typescript": ">=5.5.3" + } + }, "node_modules/@hey-api/json-schema-ref-parser": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@hey-api/json-schema-ref-parser/-/json-schema-ref-parser-1.0.6.tgz", - "integrity": "sha512-yktiFZoWPtEW8QKS65eqKwA5MTKp88CyiL8q72WynrBs/73SAaxlSWlA2zW/DZlywZ5hX1OYzrCC0wFdvO9c2w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@hey-api/json-schema-ref-parser/-/json-schema-ref-parser-1.2.0.tgz", + "integrity": "sha512-BMnIuhVgNmSudadw1GcTsP18Yk5l8FrYrg/OSYNxz0D2E0vf4D5e4j5nUbuY8MU6p1vp7ev0xrfP6A/NWazkzQ==", "dev": true, "license": "MIT", "dependencies": { @@ -568,16 +599,21 @@ } }, "node_modules/@hey-api/openapi-ts": { - "version": "0.67.6", - "resolved": "https://registry.npmjs.org/@hey-api/openapi-ts/-/openapi-ts-0.67.6.tgz", - "integrity": "sha512-ywZggKKYieVjM6O6T60/Bl+QBRvhcKAov8dAIQor7reyKpFbEn3Ws+9WKoXR8QUuXN8AR8nMFjOuYPer5db/dg==", + "version": "0.85.0", + "resolved": "https://registry.npmjs.org/@hey-api/openapi-ts/-/openapi-ts-0.85.0.tgz", + "integrity": "sha512-LSBHP2/wTF1BnaccHGX1t+0Ss+2VJQxotrLz/0+LK2z8ocuyVZXOYhfBSd7FP8sK78MDJVDBYrPCsBUvNSlH1g==", "dev": true, "license": "MIT", "dependencies": { - "@hey-api/json-schema-ref-parser": "1.0.6", - "c12": "2.0.1", + "@hey-api/codegen-core": "^0.2.0", + "@hey-api/json-schema-ref-parser": "1.2.0", + "ansi-colors": "4.1.3", + "c12": "3.3.0", + "color-support": "1.1.3", "commander": "13.0.0", - "handlebars": "4.7.8" + "handlebars": "4.7.8", + "open": "10.1.2", + "semver": "7.7.2" }, "bin": { "openapi-ts": "bin/index.cjs" @@ -589,7 +625,7 @@ "url": "https://github.com/sponsors/hey-api" }, "peerDependencies": { - "typescript": "^5.5.3" + "typescript": ">=5.5.3" } }, "node_modules/@humanwhocodes/config-array": { @@ -658,22 +694,37 @@ "license": "MIT" }, "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz", - "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.4.0.tgz", + "integrity": "sha512-ficsEARKnmmW5njugNYKipTm4SFnbik7CXtoencDZzmzo/dQ+2Q0bgkzJuoJP20Aj0F+izzJjOqsnkd6F/o1bw==", "dev": true, "license": "BSD-3-Clause", "peer": true }, "node_modules/@lit/reactive-element": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.0.tgz", - "integrity": "sha512-L2qyoZSQClcBmq0qajBVbhYEcG6iK0XfLn66ifLe/RfC0/ihpc+pl0Wdn8bJ8o+hj38cG0fGXRgSS20MuXn7qA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.1.tgz", + "integrity": "sha512-N+dm5PAYdQ8e6UlywyyrgI2t++wFGXfHx+dSJ1oBrg6FAxUj40jId++EaRm80MKX5JnlH1sBsyZ5h0bcZKemCg==", "dev": true, "license": "BSD-3-Clause", "peer": true, "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.2.0" + "@lit-labs/ssr-dom-shim": "^1.4.0" + } + }, + "node_modules/@microsoft/signalr": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@microsoft/signalr/-/signalr-10.0.0.tgz", + "integrity": "sha512-0BRqz/uCx3JdrOqiqgFhih/+hfTERaUfCZXFB52uMaZJrKaPRzHzMuqVsJC/V3pt7NozcNXGspjKiQEK+X7P2w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "abort-controller": "^3.0.0", + "eventsource": "^2.0.2", + "fetch-cookie": "^2.0.3", + "node-fetch": "^2.6.7", + "ws": "^7.5.10" } }, "node_modules/@nodelib/fs.scandir": { @@ -1009,9 +1060,9 @@ } }, "node_modules/@tiptap/core": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.11.7.tgz", - "integrity": "sha512-zN+NFFxLsxNEL8Qioc+DL6b8+Tt2bmRbXH22Gk6F6nD30x83eaUSFlSv3wqvgyCq3I1i1NO394So+Agmayx6rQ==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.6.2.tgz", + "integrity": "sha512-XKZYrCVFsyQGF6dXQR73YR222l/76wkKfZ+2/4LCrem5qtcOarmv5pYxjUBG8mRuBPskTTBImSFTeQltJIUNCg==", "dev": true, "license": "MIT", "peer": true, @@ -1020,13 +1071,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/pm": "^2.7.0" + "@tiptap/pm": "^3.6.2" } }, - "node_modules/@tiptap/extension-blockquote": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.12.0.tgz", - "integrity": "sha512-XUC2A77YAPMJS2SqZ2S62IGcUH8gZ7cdhoWlYQb1pR4ZzXFByeKDJPxfYeAePSiuI01YGrlzgY2c6Ncx/DtO0A==", + "node_modules/@tiptap/extension-image": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-3.6.2.tgz", + "integrity": "sha512-AuetGUr1sGH18UDREk0EMt7jYnFkBFsnYlXNNcp0g0rGACRKaCD7Bzv451nHc8m1WYOpqMAyTTlRg+eYs442xA==", "dev": true, "license": "MIT", "peer": true, @@ -1035,13 +1086,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.6.2" } }, - "node_modules/@tiptap/extension-bold": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.12.0.tgz", - "integrity": "sha512-lAUtoLDLRc5ofD2I9MFY6MQ7d1qBLLqS1rvpwaPjOaoQb/GPVnaHj9qXYG0SY9K3erMtto48bMFpAcscjZHzZQ==", + "node_modules/@tiptap/extension-subscript": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-subscript/-/extension-subscript-3.6.2.tgz", + "integrity": "sha512-knI9mlRPwRSTza8y5K7x3w3Lg/m5dXAqbxpjCwTxEzu3ngbaUyLEDfQ4TCViwgqCWTefDtPI/FEiKl1MTVcw9g==", "dev": true, "license": "MIT", "peer": true, @@ -1050,13 +1101,14 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.6.2", + "@tiptap/pm": "^3.6.2" } }, - "node_modules/@tiptap/extension-bullet-list": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.12.0.tgz", - "integrity": "sha512-YTCjztB8MaIpwyxFYr81H4+LdKCq1VlaSXQyrPdB44mVdhhRqc46BYQb8/B//XE3UIu3X2QWFjwrqRlUq6vUiw==", + "node_modules/@tiptap/extension-superscript": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-superscript/-/extension-superscript-3.6.2.tgz", + "integrity": "sha512-DbxTVrbX6cYSn8vSQ0kScgJ37x3EzNX6a83XO1OhByH3pH1oPqZyzBtLLNt5ocaMFQHEGawhwoGjNpzOCSoajA==", "dev": true, "license": "MIT", "peer": true, @@ -1065,13 +1117,14 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.6.2", + "@tiptap/pm": "^3.6.2" } }, - "node_modules/@tiptap/extension-character-count": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@tiptap/extension-character-count/-/extension-character-count-2.11.7.tgz", - "integrity": "sha512-gcVbKou+uxzg8N0BBKceLwtpWvN8g2TIjTuCdyAcAPukX63DqVWOkofFHn1RqZbstJmtF4pTGZs9OH/GJrp27Q==", + "node_modules/@tiptap/extension-table": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table/-/extension-table-3.6.2.tgz", + "integrity": "sha512-ozRPpxTXrYABTU/zQq3JlytUUXvQDaEcl19YUR1mL/7Ctf4zRBvSnBHCuP/1Cu+4oHX4zdako/G++Z5qJxa65A==", "dev": true, "license": "MIT", "peer": true, @@ -1080,14 +1133,14 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" + "@tiptap/core": "^3.6.2", + "@tiptap/pm": "^3.6.2" } }, - "node_modules/@tiptap/extension-code": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.12.0.tgz", - "integrity": "sha512-R7RaS+hJeHFim7alImQ9L9CSWSMjWXvz0Ote568x9ea5gdBGUYW8PcH+5a91lh8e1XGYWBM12a8oJZRyxg/tQA==", + "node_modules/@tiptap/extension-text-align": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text-align/-/extension-text-align-3.6.2.tgz", + "integrity": "sha512-P3IYe6pyOe9hZoSQfHypFioLbGrr24d55/RkvNnwSd8qzd0RhjXIyiuOmYLcXdLio4PkJ+KjbZcptQ9zW8Mh4g==", "dev": true, "license": "MIT", "peer": true, @@ -1096,13 +1149,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.6.2" } }, - "node_modules/@tiptap/extension-code-block": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.12.0.tgz", - "integrity": "sha512-1D7cYAjgxEFHdfC/35Ooi4GqWKB5sszbW8iI7N16XILNln26xb0d5KflXqYrwr9CN/ZnZoCl2o6YsP7xEObcZA==", + "node_modules/@tiptap/extension-text-style": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text-style/-/extension-text-style-3.6.2.tgz", + "integrity": "sha512-1N5suFcjZLdccYN+5zjFGFPV6YsLWbz0aYnLcwUvrRSxMm5VkOqKSm5ZLV11rikU06WgkfpLCtmZ5jpl0piD9Q==", "dev": true, "license": "MIT", "peer": true, @@ -1111,14 +1164,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" + "@tiptap/core": "^3.6.2" } }, - "node_modules/@tiptap/extension-document": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.12.0.tgz", - "integrity": "sha512-sA1Q+mxDIv0Y3qQTBkYGwknNbDcGFiJ/fyAFholXpqbrcRx3GavwR/o0chBdsJZlFht0x7AWGwUYWvIo7wYilA==", + "node_modules/@tiptap/extensions": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@tiptap/extensions/-/extensions-3.6.2.tgz", + "integrity": "sha512-tg7/DgaI6SpkeawryapUtNoBxsJUMJl3+nSjTfTvsaNXed+BHzLPsvmPbzlF9ScrAbVEx8nj6CCkneECYIQ4CQ==", "dev": true, "license": "MIT", "peer": true, @@ -1127,29 +1179,84 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.6.2", + "@tiptap/pm": "^3.6.2" } }, - "node_modules/@tiptap/extension-dropcursor": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.12.0.tgz", - "integrity": "sha512-zcZSOXFj+7LVnmdPWTfKr5AoxYIzFPFlLJe35AdTQC5IhkljLn1Exct8I30ZREojX/00hKYsO7JJmePS6TEVlQ==", + "node_modules/@tiptap/pm": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.6.2.tgz", + "integrity": "sha512-g+NXjqjbj6NfHOMl22uNWVYIu8oCq7RFfbnpohPMsSKJLaHYE8mJR++7T6P5R9FoqhIFdwizg1jTpwRU5CHqXQ==", "dev": true, "license": "MIT", "peer": true, + "dependencies": { + "prosemirror-changeset": "^2.3.0", + "prosemirror-collab": "^1.3.1", + "prosemirror-commands": "^1.6.2", + "prosemirror-dropcursor": "^1.8.1", + "prosemirror-gapcursor": "^1.3.2", + "prosemirror-history": "^1.4.1", + "prosemirror-inputrules": "^1.4.0", + "prosemirror-keymap": "^1.2.2", + "prosemirror-markdown": "^1.13.1", + "prosemirror-menu": "^1.2.4", + "prosemirror-model": "^1.24.1", + "prosemirror-schema-basic": "^1.2.3", + "prosemirror-schema-list": "^1.5.0", + "prosemirror-state": "^1.4.3", + "prosemirror-tables": "^1.6.4", + "prosemirror-trailing-node": "^3.0.0", + "prosemirror-transform": "^1.10.2", + "prosemirror-view": "^1.38.1" + }, "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@tiptap/starter-kit": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-3.6.2.tgz", + "integrity": "sha512-nPzraIx/f1cOUNqG1LSC0OTnEu3mudcN3jQVuyGh3dvdOnik7FUciJEVfHKnloAyeoijidEeiLpiGHInp2uREg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@tiptap/core": "^3.6.2", + "@tiptap/extension-blockquote": "^3.6.2", + "@tiptap/extension-bold": "^3.6.2", + "@tiptap/extension-bullet-list": "^3.6.2", + "@tiptap/extension-code": "^3.6.2", + "@tiptap/extension-code-block": "^3.6.2", + "@tiptap/extension-document": "^3.6.2", + "@tiptap/extension-dropcursor": "^3.6.2", + "@tiptap/extension-gapcursor": "^3.6.2", + "@tiptap/extension-hard-break": "^3.6.2", + "@tiptap/extension-heading": "^3.6.2", + "@tiptap/extension-horizontal-rule": "^3.6.2", + "@tiptap/extension-italic": "^3.6.2", + "@tiptap/extension-link": "^3.6.2", + "@tiptap/extension-list": "^3.6.2", + "@tiptap/extension-list-item": "^3.6.2", + "@tiptap/extension-list-keymap": "^3.6.2", + "@tiptap/extension-ordered-list": "^3.6.2", + "@tiptap/extension-paragraph": "^3.6.2", + "@tiptap/extension-strike": "^3.6.2", + "@tiptap/extension-text": "^3.6.2", + "@tiptap/extension-underline": "^3.6.2", + "@tiptap/extensions": "^3.6.2", + "@tiptap/pm": "^3.6.2" }, - "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" } }, - "node_modules/@tiptap/extension-gapcursor": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.12.0.tgz", - "integrity": "sha512-k8ji5v9YKn7bNjo8UtI9hEfXfl4tKUp1hpJOEmUxGJQa3LIwrwSbReupUTnHszGQelzxikS/l1xO9P0TIGwRoA==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/core": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.10.7.tgz", + "integrity": "sha512-4rD3oHkXNOS6Fxm0mr+ECyq35iMFnnAXheIO+UsQbOexwTxn2yZ5Q1rQiFKcCf+p+rrg1yt8TtxQPM8VLWS+1g==", "dev": true, "license": "MIT", "peer": true, @@ -1158,14 +1265,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" + "@tiptap/pm": "^3.10.7" } }, - "node_modules/@tiptap/extension-hard-break": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.12.0.tgz", - "integrity": "sha512-08MNS2PK5DzdnAfqXn4krmJ/xebKmWpRpYqqN5EM8AvetYKlAJyTVSpo0ZUeGbZ3EZiPm9djgSnrLqpFUDjRCg==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-blockquote": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-3.10.7.tgz", + "integrity": "sha512-xIeRVTnnC78VDgm3YxosgM1ODVKBdmyWuz4Dhhyc1UCPFptzNIPZuzNbOxyThFseqKh1LVDM+EmjshACE/3jVg==", "dev": true, "license": "MIT", "peer": true, @@ -1174,13 +1280,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.10.7" } }, - "node_modules/@tiptap/extension-heading": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.12.0.tgz", - "integrity": "sha512-9DfES4Wd5TX1foI70N9sAL+35NN1UHrtzDYN2+dTHupnmKir9RaMXyZcbkUb4aDVzYrGxIqxJzHBVkquKIlTrw==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-bold": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-3.10.7.tgz", + "integrity": "sha512-NWjOIIZdxUSkWLQrEY4Tg60MzS6RGt/1aLnwTyFFzFFShzOmd/xzxp0fRS+p79ZKNcQa9OKgnrlS4xuRq8WOdQ==", "dev": true, "license": "MIT", "peer": true, @@ -1189,13 +1295,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.10.7" } }, - "node_modules/@tiptap/extension-history": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.12.0.tgz", - "integrity": "sha512-+B9CAf2BFURC6mQiM1OQtahVTzdEOEgT/UUNlRZkeeBc0K5of3dr6UdBqaoaMAefja3jx5PqiQ7mhUBAjSt6AA==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-bullet-list": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-3.10.7.tgz", + "integrity": "sha512-c6ycK/8TZEl8sw4Wkr4APpjeNaNhh4EJPBZ2bt4oHqkl+v5NCddo9xdP1sgsopNySPNQaHQSO5GYmU2QHbSBpA==", "dev": true, "license": "MIT", "peer": true, @@ -1204,14 +1310,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" + "@tiptap/extension-list": "^3.10.7" } }, - "node_modules/@tiptap/extension-horizontal-rule": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.12.0.tgz", - "integrity": "sha512-Vi2+6RIehDSpoJn/7PDuOieUj7W7WrEb4wBxK9TG8PDscihR0mehhhzm/K2xhH4TN48iPJGRsjDFrFjTbXmcnw==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-code": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-3.10.7.tgz", + "integrity": "sha512-POK3CCy29LoRI6JVvFRVAmH2G90a7pKJT8sbqOaX1WKmLLDt7drUxGgBNnz/cBXJQHPnXZgRq/P8ZQPISklT7Q==", "dev": true, "license": "MIT", "peer": true, @@ -1220,14 +1325,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" + "@tiptap/core": "^3.10.7" } }, - "node_modules/@tiptap/extension-image": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.11.7.tgz", - "integrity": "sha512-YvCmTDB7Oo+A56tR4S/gcNaYpqU4DDlSQcRp5IQvmQV5EekSe0lnEazGDoqOCwsit9qQhj4MPQJhKrnaWrJUrg==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-code-block": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-3.10.7.tgz", + "integrity": "sha512-Z6EH/DhSVQtOKL+vS9J2dbvJ81T3xJ2Htgn4BOxpuCGUCInu5Aymf/53tco3aQse/UHB3Gvr+/4AOwxphXYhgw==", "dev": true, "license": "MIT", "peer": true, @@ -1236,13 +1340,14 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.10.7", + "@tiptap/pm": "^3.10.7" } }, - "node_modules/@tiptap/extension-italic": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.12.0.tgz", - "integrity": "sha512-JKcXK3LmEsmxNzEq5e06rPUGMRLUxmJ2mYtBY4NlJ6yLM9XMDljtgeTnWT0ySLYmfINSFTkX4S7WIRbpl9l4pw==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-document": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-3.10.7.tgz", + "integrity": "sha512-RlezqyAf0voUblrMLArh+AZJ9t+rE6buFa+U1V37Ey+I1z+Y8pPqlhtYJoTUz0GtSZWMReirSvoQpQJHM9x3Yw==", "dev": true, "license": "MIT", "peer": true, @@ -1251,32 +1356,28 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.10.7" } }, - "node_modules/@tiptap/extension-link": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.11.7.tgz", - "integrity": "sha512-qKIowE73aAUrnQCIifYP34xXOHOsZw46cT/LBDlb0T60knVfQoKVE4ku08fJzAV+s6zqgsaaZ4HVOXkQYLoW7g==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-dropcursor": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-3.10.7.tgz", + "integrity": "sha512-VnI+lRpXi9Qa/RFeZYqGd5taApM8SD6qYBnL1FqwRx7eLpWH3UyH911d9/sFqYxouDy06XRDHPoqlyMw5afdwQ==", "dev": true, "license": "MIT", "peer": true, - "dependencies": { - "linkifyjs": "^4.2.0" - }, "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" + "@tiptap/extensions": "^3.10.7" } }, - "node_modules/@tiptap/extension-list-item": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.12.0.tgz", - "integrity": "sha512-4YwZooC8HP+gPxs6YrkB1ayggyYbgVvJx/rWBT6lKSW2MVVg8QXi1zAcSI3MhIhHmqDysXXFPL8JURlbeGjaFA==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-gapcursor": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-3.10.7.tgz", + "integrity": "sha512-1VDNX+4ZCKxuoj6nRTZDwHjPYhuSdELYYCSfxscojlwexPxCLcgqOt71xdgnQXW5Hv6ACT4OrGGYcGTupudOHg==", "dev": true, "license": "MIT", "peer": true, @@ -1285,13 +1386,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/extensions": "^3.10.7" } }, - "node_modules/@tiptap/extension-ordered-list": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.12.0.tgz", - "integrity": "sha512-1ys0e/oqk09oXxrB1WzAx5EntK/QreObG/V1yhgihGm429fxHMsxzIYN6dKAYxx0YOPQG7qEZRrrPuWU70Ms7g==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-hard-break": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-3.10.7.tgz", + "integrity": "sha512-EIdTsD2pV4FSef/6nrKlXV8H5861PElnIjuoHkwk1alowAVL/HSvJqPxZwH6k2qLcsabkr0cSdaDixw9gJGAdg==", "dev": true, "license": "MIT", "peer": true, @@ -1300,13 +1401,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.10.7" } }, - "node_modules/@tiptap/extension-paragraph": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.12.0.tgz", - "integrity": "sha512-QNK5cgewCunWFxpLlbvvoO1rrLgEtNKxiY79fctP9toV+e59R+1i1Q9lXC1O5mOfDgVxCb6uFDMsqmKhFjpPog==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-heading": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-3.10.7.tgz", + "integrity": "sha512-Pp0LYTEyimDfiXzy+8Ls2LDuhhmyM7jXr8go3myTHSLMTpt0ch7P5FVSnDxMFtQ5eRiAwXHET63/JOaiIwMa/w==", "dev": true, "license": "MIT", "peer": true, @@ -1315,13 +1416,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.10.7" } }, - "node_modules/@tiptap/extension-placeholder": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-2.11.7.tgz", - "integrity": "sha512-/06zXV4HIjYoiaUq1fVJo/RcU8pHbzx21evOpeG/foCfNpMI4xLU/vnxdUi6/SQqpZMY0eFutDqod1InkSOqsg==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-horizontal-rule": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-3.10.7.tgz", + "integrity": "sha512-V9uWb341QUBDDbR3aoSs3Sx0PQQaKwZ/ESVEE03El9rkIrf8g5K82x8/M0nvSOvGobt6oRyI/rgbj196YQuXiQ==", "dev": true, "license": "MIT", "peer": true, @@ -1330,14 +1431,14 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" + "@tiptap/core": "^3.10.7", + "@tiptap/pm": "^3.10.7" } }, - "node_modules/@tiptap/extension-strike": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.12.0.tgz", - "integrity": "sha512-nBaa5YtBsLJPZFfSs36sBz4Zgi/c8b3MsmS/Az8uXaHb0R9yPewOVUMDIQbxMct8SXUlIo9VtKlOL+mVJ3Nkpw==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-italic": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-3.10.7.tgz", + "integrity": "sha512-1CQgHNm51xDyZI188f5xKLcUIjRS+2cyZgS9XwKwIU/3QOsiKsNC+cBc4VmN3aR0A01NjK0ch0MjeKkPPWUt5A==", "dev": true, "license": "MIT", "peer": true, @@ -1346,28 +1447,32 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.10.7" } }, - "node_modules/@tiptap/extension-subscript": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@tiptap/extension-subscript/-/extension-subscript-2.11.7.tgz", - "integrity": "sha512-I25ZexCddFJ9701DCCtQbX3Vtxzj5d9ss2GAXVweIUCdATCScaebsznyUQoN5papmhTxXsw5OD+K2ZHxP82pew==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-link": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-3.10.7.tgz", + "integrity": "sha512-AIgrtveTQ5QyRpcic2MVSuv9aOaN0n+swdZPvi8XREZX/uf1SU4dYU7p0dNChhcn53GGPDNVRTQXX4YdEAZFQQ==", "dev": true, "license": "MIT", "peer": true, + "dependencies": { + "linkifyjs": "^4.3.2" + }, "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.10.7", + "@tiptap/pm": "^3.10.7" } }, - "node_modules/@tiptap/extension-superscript": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@tiptap/extension-superscript/-/extension-superscript-2.11.7.tgz", - "integrity": "sha512-dNRpCcRJs0Qvv0sZRgbH7Y5hDVbWsGSZjtwFCs/mysPrvHqmXjzo7568kYWTggxEYxnXw6n0FfkCAEHlt0N90Q==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-list": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list/-/extension-list-3.10.7.tgz", + "integrity": "sha512-aggic/94+wAt50Bx492++YsQtu0NdH8psaRokA0/9NvTjHoLq/zbbyloJyYW+DWe4GzwK9qCB5PKHQTTXWMu9Q==", "dev": true, "license": "MIT", "peer": true, @@ -1376,13 +1481,14 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.10.7", + "@tiptap/pm": "^3.10.7" } }, - "node_modules/@tiptap/extension-table": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@tiptap/extension-table/-/extension-table-2.11.7.tgz", - "integrity": "sha512-rfwWkNXz/EZuhc8lylsCWPbx0Xr5FlIhreWFyeoXYrDEO3x4ytYcVOpNmbabJYP2semfM0PvPR5o84zfFkLZyg==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-list-item": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-3.10.7.tgz", + "integrity": "sha512-beCOcDfOzCY9/7fAHY/O/RFcqxLPJWGBV/6YMMUkyW34rrb1NmSZp2qegTh+1820DHs7sokn/OeCIo8Fqs8lQA==", "dev": true, "license": "MIT", "peer": true, @@ -1391,14 +1497,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" + "@tiptap/extension-list": "^3.10.7" } }, - "node_modules/@tiptap/extension-table-cell": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@tiptap/extension-table-cell/-/extension-table-cell-2.11.7.tgz", - "integrity": "sha512-JMOkSYRckc5SJP86yGGiHzCxCR8ecrRENvTWAKib6qer2tutxs5u42W+Z8uTcHC2dRz7Fv54snOkDoqPwkf6cw==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-list-keymap": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-keymap/-/extension-list-keymap-3.10.7.tgz", + "integrity": "sha512-QzDX+BY3z60sz3GfMK7oQV/CnAL0elRI+VdGyObuNS/RCpD6DKwa5Gb+vB9Qj3sUccViJOhBr8OpmLDtAoco8g==", "dev": true, "license": "MIT", "peer": true, @@ -1407,13 +1512,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/extension-list": "^3.10.7" } }, - "node_modules/@tiptap/extension-table-header": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@tiptap/extension-table-header/-/extension-table-header-2.11.7.tgz", - "integrity": "sha512-wPRKpliS5QQXgsp//ZjXrHMdLICMkjg2fUrQinOiBa7wDL5C7Y+SehtuK4s2tjeAkyAdj+nepfftyBRIlUSMXg==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-ordered-list": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-3.10.7.tgz", + "integrity": "sha512-+rcJM0iqBVHBRlbupU8KmoTc3AD8maWJyQl05LrVQcAwmRDx3xtIagRnN1hwxSYavIFRwLATgYHSWd08nnL38g==", "dev": true, "license": "MIT", "peer": true, @@ -1422,13 +1527,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/extension-list": "^3.10.7" } }, - "node_modules/@tiptap/extension-table-row": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@tiptap/extension-table-row/-/extension-table-row-2.11.7.tgz", - "integrity": "sha512-K254RiXWGXGjz5Cm835hqfQiwnYXm8aw6oOa3isDh4A1B+1Ev4DB2vEDKMrgaOor3nbTsSYmAx2iEMrZSbpaRg==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-paragraph": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-3.10.7.tgz", + "integrity": "sha512-53+nCxNaKcmeqQ+aWrSauEWywuWPp8qkUTOO2rHlpmM+rk/1bv3IZePKQ2JtHZzYCeRd3xOC33kl60HE7EwakQ==", "dev": true, "license": "MIT", "peer": true, @@ -1437,13 +1542,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.10.7" } }, - "node_modules/@tiptap/extension-text": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.12.0.tgz", - "integrity": "sha512-0ytN9V1tZYTXdiYDQg4FB2SQ56JAJC9r/65snefb9ztl+gZzDrIvih7CflHs1ic9PgyjexfMLeH+VzuMccNyZw==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-strike": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-3.10.7.tgz", + "integrity": "sha512-pZMdQhChv59jsahvmjiJjSTPM05J6EHAX/GPdA9w8xSKy73899MhIhWJ7yt2CJEPjwn3ixnomIPhMjxBkizv+g==", "dev": true, "license": "MIT", "peer": true, @@ -1452,13 +1557,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.10.7" } }, - "node_modules/@tiptap/extension-text-align": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text-align/-/extension-text-align-2.11.7.tgz", - "integrity": "sha512-3M8zd9ROADXazVNpgR6Ejs1evSvBveN36qN4GgV71GqrNlTcjqYgQcXFLQrsd2hnE+aXir8/8bLJ+aaJXDninA==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-text": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-3.10.7.tgz", + "integrity": "sha512-b7Rjil/uqiabWnRHyd1P84rWD2XRyZZSrmIAO9mDMD/jB2bE+f7rDJcHG76GF03UicDhEEEf2/8mz0dMLa6mUA==", "dev": true, "license": "MIT", "peer": true, @@ -1467,13 +1572,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.10.7" } }, - "node_modules/@tiptap/extension-text-style": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text-style/-/extension-text-style-2.12.0.tgz", - "integrity": "sha512-Pxwt23ZlvbQUahV0PvHy8Ej6IAuKR1FvHobUvwP3T8AiY7hob66fWRe7tQbESzSAzm5Vv2xkvyHeU8vekMTezA==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extension-underline": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-3.10.7.tgz", + "integrity": "sha512-yBL81xdbjT5Y7acoBqWpnH/SoH3bpgqaLvJBG3NNk+mdLB5HjBWTlPLKjvjQV0HRN5bZ+RJWeiRnQk1ahcfmQA==", "dev": true, "license": "MIT", "peer": true, @@ -1482,13 +1587,13 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.10.7" } }, - "node_modules/@tiptap/extension-underline": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.11.7.tgz", - "integrity": "sha512-NtoQw6PGijOAtXC6G+0Aq0/Z5wwEjPhNHs8nsjXogfWIgaj/aI4/zfBnA06eI3WT+emMYQTl0fTc4CUPnLVU8g==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/extensions": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/extensions/-/extensions-3.10.7.tgz", + "integrity": "sha512-jYYR7NA7t2hdyJmSLYVAJ3usyIOZ2mfFqPCCHbSn/k3jqmGaPFZuxJSwmYjfmTxisZ9rGn+49/YJF2y/Yej/0Q==", "dev": true, "license": "MIT", "peer": true, @@ -1497,18 +1602,19 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0" + "@tiptap/core": "^3.10.7", + "@tiptap/pm": "^3.10.7" } }, - "node_modules/@tiptap/pm": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.11.7.tgz", - "integrity": "sha512-7gEEfz2Q6bYKXM07vzLUD0vqXFhC5geWRA6LCozTiLdVFDdHWiBrvb2rtkL5T7mfLq03zc1QhH7rI3F6VntOEA==", + "node_modules/@tiptap/starter-kit/node_modules/@tiptap/pm": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.10.7.tgz", + "integrity": "sha512-/iiurioqSukJk6CrEtfRpdOEafDybyVPToAllgn7i2XcusXSxJSX+K0GUndMUwVR+UqVOCyMYBTRTnE0hdQqgA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "prosemirror-changeset": "^2.2.1", + "prosemirror-changeset": "^2.3.0", "prosemirror-collab": "^1.3.1", "prosemirror-commands": "^1.6.2", "prosemirror-dropcursor": "^1.8.1", @@ -1518,49 +1624,14 @@ "prosemirror-keymap": "^1.2.2", "prosemirror-markdown": "^1.13.1", "prosemirror-menu": "^1.2.4", - "prosemirror-model": "^1.23.0", + "prosemirror-model": "^1.24.1", "prosemirror-schema-basic": "^1.2.3", - "prosemirror-schema-list": "^1.4.1", + "prosemirror-schema-list": "^1.5.0", "prosemirror-state": "^1.4.3", "prosemirror-tables": "^1.6.4", "prosemirror-trailing-node": "^3.0.0", "prosemirror-transform": "^1.10.2", - "prosemirror-view": "^1.37.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - } - }, - "node_modules/@tiptap/starter-kit": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.11.7.tgz", - "integrity": "sha512-K+q51KwNU/l0kqRuV5e1824yOLVftj6kGplGQLvJG56P7Rb2dPbM/JeaDbxQhnHT/KDGamG0s0Po0M3pPY163A==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@tiptap/core": "^2.11.7", - "@tiptap/extension-blockquote": "^2.11.7", - "@tiptap/extension-bold": "^2.11.7", - "@tiptap/extension-bullet-list": "^2.11.7", - "@tiptap/extension-code": "^2.11.7", - "@tiptap/extension-code-block": "^2.11.7", - "@tiptap/extension-document": "^2.11.7", - "@tiptap/extension-dropcursor": "^2.11.7", - "@tiptap/extension-gapcursor": "^2.11.7", - "@tiptap/extension-hard-break": "^2.11.7", - "@tiptap/extension-heading": "^2.11.7", - "@tiptap/extension-history": "^2.11.7", - "@tiptap/extension-horizontal-rule": "^2.11.7", - "@tiptap/extension-italic": "^2.11.7", - "@tiptap/extension-list-item": "^2.11.7", - "@tiptap/extension-ordered-list": "^2.11.7", - "@tiptap/extension-paragraph": "^2.11.7", - "@tiptap/extension-strike": "^2.11.7", - "@tiptap/extension-text": "^2.11.7", - "@tiptap/extension-text-style": "^2.11.7", - "@tiptap/pm": "^2.11.7" + "prosemirror-view": "^1.38.1" }, "funding": { "type": "github", @@ -1835,188 +1906,186 @@ } }, "node_modules/@umbraco-cms/backoffice": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@umbraco-cms/backoffice/-/backoffice-16.0.0.tgz", - "integrity": "sha512-d8YvcCu4Bddps4agKHZoBgmhPhJhffoEEHUFD18iiRx+6ccRighO/qaE/5X8SeZzusSuyFnbeyJRo/5tyu0FRA==", + "version": "17.0.0", + "resolved": "https://www.myget.org/F/umbracoprereleases/npm/@umbraco-cms/backoffice/-/@umbraco-cms/backoffice-17.0.0.tgz", + "integrity": "sha1-3bIgOgKnU5q47KL3OPDrGup2iOk=", "dev": true, "license": "MIT", "engines": { - "node": ">=22", - "npm": ">=10.9" + "node": ">=22.17.1", + "npm": ">=10.9.2" }, "peerDependencies": { - "@hey-api/client-fetch": "^0.10.0", - "@tiptap/core": "2.11.7", - "@tiptap/extension-character-count": "2.11.7", - "@tiptap/extension-image": "2.11.7", - "@tiptap/extension-link": "2.11.7", - "@tiptap/extension-placeholder": "2.11.7", - "@tiptap/extension-subscript": "2.11.7", - "@tiptap/extension-superscript": "2.11.7", - "@tiptap/extension-table": "2.11.7", - "@tiptap/extension-table-cell": "2.11.7", - "@tiptap/extension-table-header": "2.11.7", - "@tiptap/extension-table-row": "2.11.7", - "@tiptap/extension-text-align": "2.11.7", - "@tiptap/extension-underline": "2.11.7", - "@tiptap/pm": "2.11.7", - "@tiptap/starter-kit": "2.11.7", + "@heximal/expressions": "^0.1.5", + "@hey-api/openapi-ts": "^0.85.0", + "@microsoft/signalr": "^10.0.0", + "@tiptap/core": "3.6.2", + "@tiptap/extension-image": "3.6.2", + "@tiptap/extension-subscript": "3.6.2", + "@tiptap/extension-superscript": "3.6.2", + "@tiptap/extension-table": "3.6.2", + "@tiptap/extension-text-align": "3.6.2", + "@tiptap/extension-text-style": "3.6.2", + "@tiptap/extensions": "3.6.2", + "@tiptap/pm": "3.6.2", + "@tiptap/starter-kit": "3.6.2", "@types/diff": "^7.0.2", - "@umbraco-ui/uui": "1.14.0", - "@umbraco-ui/uui-css": "1.14.0", + "@umbraco-ui/uui": "^1.16.0", + "@umbraco-ui/uui-css": "^1.16.0", "diff": "^7.0.0", - "dompurify": "^3.2.5", + "dompurify": "^3.2.7", "element-internals-polyfill": "^3.0.2", - "lit": "^3.3.0", - "marked": "^15.0.9", - "monaco-editor": "^0.52.2", + "lit": "^3.3.1", + "luxon": "^3.7.2", + "marked": "^17.0.1", + "monaco-editor": "^0.54.0", "rxjs": "^7.8.2", - "uuid": "^11.1.0" + "uuid": "^13.0.0" } }, "node_modules/@umbraco-ui/uui": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.14.0.tgz", - "integrity": "sha512-et9xGGEcFyIBaMzSbPFt81SDyPdGyV8qyZzLePbs4vDTJiqjtefl0ICZib3Cwm8X4TjCXOcbVMU84wV2RCcIsQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@umbraco-ui/uui-action-bar": "1.14.0", - "@umbraco-ui/uui-avatar": "1.14.0", - "@umbraco-ui/uui-avatar-group": "1.14.0", - "@umbraco-ui/uui-badge": "1.14.0", - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-boolean-input": "1.14.0", - "@umbraco-ui/uui-box": "1.14.0", - "@umbraco-ui/uui-breadcrumbs": "1.14.0", - "@umbraco-ui/uui-button": "1.14.0", - "@umbraco-ui/uui-button-copy-text": "1.14.0", - "@umbraco-ui/uui-button-group": "1.14.0", - "@umbraco-ui/uui-button-inline-create": "1.14.0", - "@umbraco-ui/uui-card": "1.14.0", - "@umbraco-ui/uui-card-block-type": "1.14.0", - "@umbraco-ui/uui-card-content-node": "1.14.0", - "@umbraco-ui/uui-card-media": "1.14.0", - "@umbraco-ui/uui-card-user": "1.14.0", - "@umbraco-ui/uui-caret": "1.14.0", - "@umbraco-ui/uui-checkbox": "1.14.0", - "@umbraco-ui/uui-color-area": "1.14.0", - "@umbraco-ui/uui-color-picker": "1.14.0", - "@umbraco-ui/uui-color-slider": "1.14.0", - "@umbraco-ui/uui-color-swatch": "1.14.0", - "@umbraco-ui/uui-color-swatches": "1.14.0", - "@umbraco-ui/uui-combobox": "1.14.0", - "@umbraco-ui/uui-combobox-list": "1.14.0", - "@umbraco-ui/uui-css": "1.14.0", - "@umbraco-ui/uui-dialog": "1.14.0", - "@umbraco-ui/uui-dialog-layout": "1.14.0", - "@umbraco-ui/uui-file-dropzone": "1.14.0", - "@umbraco-ui/uui-file-preview": "1.14.0", - "@umbraco-ui/uui-form": "1.14.0", - "@umbraco-ui/uui-form-layout-item": "1.14.0", - "@umbraco-ui/uui-form-validation-message": "1.14.0", - "@umbraco-ui/uui-icon": "1.14.0", - "@umbraco-ui/uui-icon-registry": "1.14.0", - "@umbraco-ui/uui-icon-registry-essential": "1.14.0", - "@umbraco-ui/uui-input": "1.14.0", - "@umbraco-ui/uui-input-file": "1.14.0", - "@umbraco-ui/uui-input-lock": "1.14.0", - "@umbraco-ui/uui-input-password": "1.14.0", - "@umbraco-ui/uui-keyboard-shortcut": "1.14.0", - "@umbraco-ui/uui-label": "1.14.0", - "@umbraco-ui/uui-loader": "1.14.0", - "@umbraco-ui/uui-loader-bar": "1.14.0", - "@umbraco-ui/uui-loader-circle": "1.14.0", - "@umbraco-ui/uui-menu-item": "1.14.0", - "@umbraco-ui/uui-modal": "1.14.0", - "@umbraco-ui/uui-pagination": "1.14.0", - "@umbraco-ui/uui-popover": "1.14.0", - "@umbraco-ui/uui-popover-container": "1.14.0", - "@umbraco-ui/uui-progress-bar": "1.14.0", - "@umbraco-ui/uui-radio": "1.14.0", - "@umbraco-ui/uui-range-slider": "1.14.0", - "@umbraco-ui/uui-ref": "1.14.0", - "@umbraco-ui/uui-ref-list": "1.14.0", - "@umbraco-ui/uui-ref-node": "1.14.0", - "@umbraco-ui/uui-ref-node-data-type": "1.14.0", - "@umbraco-ui/uui-ref-node-document-type": "1.14.0", - "@umbraco-ui/uui-ref-node-form": "1.14.0", - "@umbraco-ui/uui-ref-node-member": "1.14.0", - "@umbraco-ui/uui-ref-node-package": "1.14.0", - "@umbraco-ui/uui-ref-node-user": "1.14.0", - "@umbraco-ui/uui-scroll-container": "1.14.0", - "@umbraco-ui/uui-select": "1.14.0", - "@umbraco-ui/uui-slider": "1.14.0", - "@umbraco-ui/uui-symbol-expand": "1.14.0", - "@umbraco-ui/uui-symbol-file": "1.14.0", - "@umbraco-ui/uui-symbol-file-dropzone": "1.14.0", - "@umbraco-ui/uui-symbol-file-thumbnail": "1.14.0", - "@umbraco-ui/uui-symbol-folder": "1.14.0", - "@umbraco-ui/uui-symbol-lock": "1.14.0", - "@umbraco-ui/uui-symbol-more": "1.14.0", - "@umbraco-ui/uui-symbol-sort": "1.14.0", - "@umbraco-ui/uui-table": "1.14.0", - "@umbraco-ui/uui-tabs": "1.14.0", - "@umbraco-ui/uui-tag": "1.14.0", - "@umbraco-ui/uui-textarea": "1.14.0", - "@umbraco-ui/uui-toast-notification": "1.14.0", - "@umbraco-ui/uui-toast-notification-container": "1.14.0", - "@umbraco-ui/uui-toast-notification-layout": "1.14.0", - "@umbraco-ui/uui-toggle": "1.14.0", - "@umbraco-ui/uui-visually-hidden": "1.14.0" + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.16.0.tgz", + "integrity": "sha512-aWHFSTf+FkPiMirT25UjmUD7wcyQqxvO7btO3AeA7Ogx7R3KiVNulHpPNPgTsyaHFWRcVmxhWDHaib4GHoOJXQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-action-bar": "1.16.0", + "@umbraco-ui/uui-avatar": "1.16.0", + "@umbraco-ui/uui-avatar-group": "1.16.0", + "@umbraco-ui/uui-badge": "1.16.0", + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-boolean-input": "1.16.0", + "@umbraco-ui/uui-box": "1.16.0", + "@umbraco-ui/uui-breadcrumbs": "1.16.0", + "@umbraco-ui/uui-button": "1.16.0", + "@umbraco-ui/uui-button-copy-text": "1.16.0", + "@umbraco-ui/uui-button-group": "1.16.0", + "@umbraco-ui/uui-button-inline-create": "1.16.0", + "@umbraco-ui/uui-card": "1.16.0", + "@umbraco-ui/uui-card-block-type": "1.16.0", + "@umbraco-ui/uui-card-content-node": "1.16.0", + "@umbraco-ui/uui-card-media": "1.16.0", + "@umbraco-ui/uui-card-user": "1.16.0", + "@umbraco-ui/uui-caret": "1.16.0", + "@umbraco-ui/uui-checkbox": "1.16.0", + "@umbraco-ui/uui-color-area": "1.16.0", + "@umbraco-ui/uui-color-picker": "1.16.0", + "@umbraco-ui/uui-color-slider": "1.16.0", + "@umbraco-ui/uui-color-swatch": "1.16.0", + "@umbraco-ui/uui-color-swatches": "1.16.0", + "@umbraco-ui/uui-combobox": "1.16.0", + "@umbraco-ui/uui-combobox-list": "1.16.0", + "@umbraco-ui/uui-css": "1.16.0", + "@umbraco-ui/uui-dialog": "1.16.0", + "@umbraco-ui/uui-dialog-layout": "1.16.0", + "@umbraco-ui/uui-file-dropzone": "1.16.0", + "@umbraco-ui/uui-file-preview": "1.16.0", + "@umbraco-ui/uui-form": "1.16.0", + "@umbraco-ui/uui-form-layout-item": "1.16.0", + "@umbraco-ui/uui-form-validation-message": "1.16.0", + "@umbraco-ui/uui-icon": "1.16.0", + "@umbraco-ui/uui-icon-registry": "1.16.0", + "@umbraco-ui/uui-icon-registry-essential": "1.16.0", + "@umbraco-ui/uui-input": "1.16.0", + "@umbraco-ui/uui-input-file": "1.16.0", + "@umbraco-ui/uui-input-lock": "1.16.0", + "@umbraco-ui/uui-input-password": "1.16.0", + "@umbraco-ui/uui-keyboard-shortcut": "1.16.0", + "@umbraco-ui/uui-label": "1.16.0", + "@umbraco-ui/uui-loader": "1.16.0", + "@umbraco-ui/uui-loader-bar": "1.16.0", + "@umbraco-ui/uui-loader-circle": "1.16.0", + "@umbraco-ui/uui-menu-item": "1.16.0", + "@umbraco-ui/uui-modal": "1.16.0", + "@umbraco-ui/uui-pagination": "1.16.0", + "@umbraco-ui/uui-popover": "1.16.0", + "@umbraco-ui/uui-popover-container": "1.16.0", + "@umbraco-ui/uui-progress-bar": "1.16.0", + "@umbraco-ui/uui-radio": "1.16.0", + "@umbraco-ui/uui-range-slider": "1.16.0", + "@umbraco-ui/uui-ref": "1.16.0", + "@umbraco-ui/uui-ref-list": "1.16.0", + "@umbraco-ui/uui-ref-node": "1.16.0", + "@umbraco-ui/uui-ref-node-data-type": "1.16.0", + "@umbraco-ui/uui-ref-node-document-type": "1.16.0", + "@umbraco-ui/uui-ref-node-form": "1.16.0", + "@umbraco-ui/uui-ref-node-member": "1.16.0", + "@umbraco-ui/uui-ref-node-package": "1.16.0", + "@umbraco-ui/uui-ref-node-user": "1.16.0", + "@umbraco-ui/uui-scroll-container": "1.16.0", + "@umbraco-ui/uui-select": "1.16.0", + "@umbraco-ui/uui-slider": "1.16.0", + "@umbraco-ui/uui-symbol-expand": "1.16.0", + "@umbraco-ui/uui-symbol-file": "1.16.0", + "@umbraco-ui/uui-symbol-file-dropzone": "1.16.0", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.16.0", + "@umbraco-ui/uui-symbol-folder": "1.16.0", + "@umbraco-ui/uui-symbol-lock": "1.16.0", + "@umbraco-ui/uui-symbol-more": "1.16.0", + "@umbraco-ui/uui-symbol-sort": "1.16.0", + "@umbraco-ui/uui-table": "1.16.0", + "@umbraco-ui/uui-tabs": "1.16.0", + "@umbraco-ui/uui-tag": "1.16.0", + "@umbraco-ui/uui-textarea": "1.16.0", + "@umbraco-ui/uui-toast-notification": "1.16.0", + "@umbraco-ui/uui-toast-notification-container": "1.16.0", + "@umbraco-ui/uui-toast-notification-layout": "1.16.0", + "@umbraco-ui/uui-toggle": "1.16.0", + "@umbraco-ui/uui-visually-hidden": "1.16.0" } }, "node_modules/@umbraco-ui/uui-action-bar": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-action-bar/-/uui-action-bar-1.14.0.tgz", - "integrity": "sha512-cTX0TvVxNC7EFMtEqMGMBFC8E5O8bedmJ1Hkddvp4lAzrbLGrFTPcwOG/kISaSXzFrnMzyQNdi3s23orcL5VRA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-action-bar/-/uui-action-bar-1.16.0.tgz", + "integrity": "sha512-WM08j2cGcJcbXWS6Pb9FdhaKDz3+EUSuoxrsZoGkJBJMriZLv4gq9EcE5RIstUbT8JmDPQ7uT3SDT2gZWl07MQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-button-group": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-button-group": "1.16.0" } }, "node_modules/@umbraco-ui/uui-avatar": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar/-/uui-avatar-1.14.0.tgz", - "integrity": "sha512-ykYlbHV4K+zW7viv+oqfsGcL0ZII4vQy3YnPusFiz6bS3ceDDpY9MpRtuDTv4z+PXW4Wo1FjB2iMHrza55/RUw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar/-/uui-avatar-1.16.0.tgz", + "integrity": "sha512-1u6+hOLy5NrFh5/Z4Kp88y3Mhq+FYCZRwPb+5lSutm+aMy27dehRKkZqlbptWn/qocUCibDxQpruvu/UMtVQtg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-avatar-group": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar-group/-/uui-avatar-group-1.14.0.tgz", - "integrity": "sha512-8pLxQvtW1yuaReuSy0wq6kYZXPSiZjKv8ecmciLgWr9aKGR++CwYrwWKA3c+jZTarb8dz4MGMnQpqHCTqlQbpQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar-group/-/uui-avatar-group-1.16.0.tgz", + "integrity": "sha512-509UZzUSD/JhJEVLEpT5ltccHpEw8RxoZbG+hJeg23Oh3jNuRrKvuiyOut5c6JfjMdawHw6vPivVwjqCmbZG5g==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-avatar": "1.14.0", - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-avatar": "1.16.0", + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-badge": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-badge/-/uui-badge-1.14.0.tgz", - "integrity": "sha512-iUosWuf7XngJBdwmvx8BZkzsollH4146Gt2CQBGltFZRCZ7uUkB2zCYb2E1ys4BEWuKHK4ZLiOcYtpPtoNeZJQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-badge/-/uui-badge-1.16.0.tgz", + "integrity": "sha512-sHo71JOxxk0EufgYfCl9miuYgM1LDSnmtHedvDGs776htMFkLo3W/cFWgIXabAHZeSj4R5UWMGDNsugwv03R+w==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-base": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.14.0.tgz", - "integrity": "sha512-m/BQYeKL9XmHPfHfCfSwTjcmUmJxynI0m4yqLTmQqQ3x1hiRqqfYyLSrpi3uW1H/HCxttUkxEwkhAdYogMDIpQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.16.0.tgz", + "integrity": "sha512-8i9bdcSrdR/4lWm0xetr3R3w3Rod3YVbIddHqbb3iVrr0TmPDTVA48tnOsJyQFAvTrh2LZjiETvEve7pBy4WQA==", "dev": true, "license": "MIT", "peer": true, @@ -2025,265 +2094,266 @@ } }, "node_modules/@umbraco-ui/uui-boolean-input": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.14.0.tgz", - "integrity": "sha512-O+/GzpF2mNLdhXXNAfxI0k5VaR7CUnUxDDxYPhMgmuLOBwdjiq9iScJM4MUl+l7hihF5ue7os6I8DY2CnG7LJQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.16.0.tgz", + "integrity": "sha512-IRU2z3GV+WzyjUvIMeErYeOE/0GyOpItsXxfmxsEENT/7qq4UMk28fIxY9IdDfI285WP0N3kezWkPBPlCKBcNQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-box": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-box/-/uui-box-1.14.0.tgz", - "integrity": "sha512-VjD6MtEnJuHOYarFtLvn/Dyz2MRJ0sPXSDTZ3HWsF0G5fdAUB487ErOGb8CL1JtmUYgZOy6N3CqPlFyWHD+DIA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-box/-/uui-box-1.16.0.tgz", + "integrity": "sha512-/Wgnv2jr6wKG436WNjBdGq6x+aExiZhZgLPnzrTcaevy85MM5pJZWgY1+aI+pJclgU6WtRMii2+C8MZL2Qmh0w==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-css": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-css": "1.16.0" } }, "node_modules/@umbraco-ui/uui-breadcrumbs": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-breadcrumbs/-/uui-breadcrumbs-1.14.0.tgz", - "integrity": "sha512-IxHPUnIaGyvo54oDdcJf4AfzkYF1Nf727SCLHD28WqMh4QCKQQsyBGa5xhFjcQ4RSediNwvAnY7dNVVYu9OrzQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-breadcrumbs/-/uui-breadcrumbs-1.16.0.tgz", + "integrity": "sha512-PuLcxG+3ZeSXKH3M0Kkh3eVYOEJPwLfg+6+b4UXxV/O9p0tUFbNPc8ciggL/1ZBXYXjsQnFTaOQWV4zGpnCnFQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-button": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button/-/uui-button-1.14.0.tgz", - "integrity": "sha512-TVCPLVcXR4wGjtLtrTYOjoAdvwQPiCep1GiHAbozD0QKNgOqjZ2fE3CapwEwoaSNGcgw/37t0KMhUqfmZgYo2g==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button/-/uui-button-1.16.0.tgz", + "integrity": "sha512-0nTAx/GVOdGvlekkIxZp1nJs2E1DRzbdUnARl6RN5Oc40HowW9oO5oJvDIpoZcsWqkqWzFTQqVgE1z1PafKHZw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-icon-registry-essential": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-icon-registry-essential": "1.16.0" } }, "node_modules/@umbraco-ui/uui-button-copy-text": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-copy-text/-/uui-button-copy-text-1.14.0.tgz", - "integrity": "sha512-cE3ZjSaWzzdgYdNtGv1SzIClMoCxqL86+QPz9zMYvN//yA8YQmkv7y2eUyT+lKFNJXXHMgzVKMhoSn8aUzvQrA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-copy-text/-/uui-button-copy-text-1.16.0.tgz", + "integrity": "sha512-CXjJzLbedqHtlza2zspSWNZCw5XhHV5QkPFzRI5Zd8FwFZop1/UgM2GQeSrMaWdfpznbWvfUqnvSYt9wYEubVg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-button": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-button": "1.16.0" } }, "node_modules/@umbraco-ui/uui-button-group": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-group/-/uui-button-group-1.14.0.tgz", - "integrity": "sha512-W4Jf671PqtnBnYKWNyyB6rgq88qyT0IWhqUR3ilJS45znIiht/ec5xDhTFoyhLWP9+zQn/3e8EqZbmnJUj2HAA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-group/-/uui-button-group-1.16.0.tgz", + "integrity": "sha512-ygici33P70SJqa2SSjdSVd8paSKqHwewKJMcyIF/IehDepnDP0ngSHWA23B/sEzJNJgq0Zngo9g3jlhZz6H6GA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-button-inline-create": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-inline-create/-/uui-button-inline-create-1.14.0.tgz", - "integrity": "sha512-vDOZJEfjQDqIKymdpxD3h/uvBacXu/yD/xnHMrxADeMQYinvNn0AFjTFBakgfusymRLjXQubrJ63MWqidTRsQQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-inline-create/-/uui-button-inline-create-1.16.0.tgz", + "integrity": "sha512-To9K/mYXLm4SGih3uA8/jbZd/ewWKVvYH6b26F5fvEDVT+X9fjJchKT7J/u0a4C7wghvVNT+os7H0rxS3yTXiQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-card": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card/-/uui-card-1.14.0.tgz", - "integrity": "sha512-9A44pCbx9nyBtbvFE26FiP+rLE2rUg177vgoMTuURuszYoiEgfU8ixVhWCbDD14LpxET0/Yg9RNiMYF8K1bDvw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card/-/uui-card-1.16.0.tgz", + "integrity": "sha512-o/8vDLT03WnQsJKyD8r7PzxvhD3loRI7pL3tZU1BeSDcFAOZPPWIudQ/OwYeJnMI1iHkd2eTu0h22B/sXOfIIQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-checkbox": "1.16.0" } }, "node_modules/@umbraco-ui/uui-card-block-type": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-block-type/-/uui-card-block-type-1.14.0.tgz", - "integrity": "sha512-FQAInMb4AKj11Jy3TQTc6iz80h0ulmlraw3CtFbnOpwHIRP/aqUVGCW0Zb+Yykz1DGmmGvFE1u1epK/jH//6aQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-block-type/-/uui-card-block-type-1.16.0.tgz", + "integrity": "sha512-Xpq/kB/ofSn067teaOyS4hEsEt/WUlrJ0opTFgkwHxsWg9rvMzUtg2nc2JGMoIqJ64/40Axcx0jmmchIDUcbsQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-card": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-card": "1.16.0" } }, "node_modules/@umbraco-ui/uui-card-content-node": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-content-node/-/uui-card-content-node-1.14.0.tgz", - "integrity": "sha512-KcXiUfG0ulgvXWuqOGu3LTcRVoGru+Q4sj4q0bV9H/d3ZfY1idPqhkbM7v6TO56gzCng0DJ/kTL0/H5IWd8IcA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-content-node/-/uui-card-content-node-1.16.0.tgz", + "integrity": "sha512-VPRDFrZSPLDGE3kAarW78dZHIFBhwXakyj7PM278tcXGdfSM7M9HsLXME6DhlleOYfSV07wHXm0UXKieqO7vgw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-card": "1.14.0", - "@umbraco-ui/uui-icon": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-card": "1.16.0", + "@umbraco-ui/uui-icon": "1.16.0" } }, "node_modules/@umbraco-ui/uui-card-media": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.14.0.tgz", - "integrity": "sha512-Lnr8Y1bxj6QoleSMCj8GDsyJu1N5Rm105/nHYdnPO3+JcNNv3ThodKdHXYo/slSLrcVOoPJHNAQodZG66mIqsg==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.16.0.tgz", + "integrity": "sha512-IHFCnXr4Bdpj/aUn+jpmlYx9L0FzeWTwt+cb29b4oP0cjIiVaJIrkOCSIl3SF8ncrKfMlTjlgBe0t0sP4mjeug==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-card": "1.14.0", - "@umbraco-ui/uui-symbol-file": "1.14.0", - "@umbraco-ui/uui-symbol-folder": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-card": "1.16.0", + "@umbraco-ui/uui-symbol-file": "1.16.0", + "@umbraco-ui/uui-symbol-folder": "1.16.0" } }, "node_modules/@umbraco-ui/uui-card-user": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-user/-/uui-card-user-1.14.0.tgz", - "integrity": "sha512-ZBFWO2109+A9SkkznqNHUiul6G6zab/D318yz0wMTW6m2R0E8QE9mljIw8Entd720HeZlvOKpvK3ElSTNlxnJg==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-user/-/uui-card-user-1.16.0.tgz", + "integrity": "sha512-Ne64+ssQrpP9zJvlJhH1Y5xlEDMW1lG17Orj6XH99iDtGdrnug9FjRE4vpNfAVRIb9P1pf7xNJtq2XqCJHvqOQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-avatar": "1.14.0", - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-card": "1.14.0" + "@umbraco-ui/uui-avatar": "1.16.0", + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-card": "1.16.0" } }, "node_modules/@umbraco-ui/uui-caret": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-caret/-/uui-caret-1.14.0.tgz", - "integrity": "sha512-c+71esCgWn7V6Z8gr9fZkfw9BQgewZi5pbJ8R1G6HLEzz0NN11zAn5BAVebdxF5OUi/ajFqvxnAYOSSiWel5tg==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-caret/-/uui-caret-1.16.0.tgz", + "integrity": "sha512-B3xNrwkQBwye9ydlrvnYfbJyiLqwQEbpldfaJnjLvlW9xVhOFps2NfeRyXcdsvruaIwjml7aB18GVYDCd/PSlw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-checkbox": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.14.0.tgz", - "integrity": "sha512-qD/O8H7pcPnJkaf5iWjDKg89LgQKZeuBiRmrXqVePDk0HHjdZ+8TJlDaANRyBq5JePezrj6UpHPVabYDqXIJYQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.16.0.tgz", + "integrity": "sha512-4z8XrZ0InVArdHKO7L7uwAMwUwHyQKqSYShE74VHHWOibySciJ/zPx3hFO3eQ7EBL3Kj+4raun5Ah5jHUlDZwA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-boolean-input": "1.14.0", - "@umbraco-ui/uui-icon-registry-essential": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-boolean-input": "1.16.0", + "@umbraco-ui/uui-icon-registry-essential": "1.16.0" } }, "node_modules/@umbraco-ui/uui-color-area": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-area/-/uui-color-area-1.14.0.tgz", - "integrity": "sha512-ijja8REx/1OhG2ZA1yK98Q8IhSeDf+GIjfCvkR1ptzzFkz1Wiv1mvxkh9eExByidp90SgsTF3kdUxR8x6V570A==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-area/-/uui-color-area-1.16.0.tgz", + "integrity": "sha512-wiK9WNZWZ5yFd3ouTZOcoUSm+2iNZIFlGTaTScnG/DiLCBs6DUvdbSbVHueY1cGWbOx/R8N01kZBls1fk8kaHw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", + "@umbraco-ui/uui-base": "1.16.0", "colord": "^2.9.3" } }, "node_modules/@umbraco-ui/uui-color-picker": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-picker/-/uui-color-picker-1.14.0.tgz", - "integrity": "sha512-WG7I2mYDjW3W27V3LDRpUrZfkjnnuHPo8+X4ZBnY6xRXnQ83hxbdqXkaKYI6VY1dMhhqGa82wrbb4NBHGkKBiQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-picker/-/uui-color-picker-1.16.0.tgz", + "integrity": "sha512-IilZw7Qn+2QF80OXktnoY1RI45ggl8o+QyF5a6zjd2gl5BfwAVx/uFCnpDfjH6LKtRw9WvuPKHQyM0/mfi5I4g==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-popover-container": "1.14.0", + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-popover-container": "1.16.0", "colord": "^2.9.3" } }, "node_modules/@umbraco-ui/uui-color-slider": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-slider/-/uui-color-slider-1.14.0.tgz", - "integrity": "sha512-8eNA+7GJNVl68amAJIbCWMe/8usWanZ1fKXPf3ZJ54K65K2cDYd2hS7DEVEwSXo+AV9iMeBYgbHIRBqVPZ89jw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-slider/-/uui-color-slider-1.16.0.tgz", + "integrity": "sha512-GDlAv+75efrOq9K/mZSKLwmc/ZG82hCaRMpWI4guKKvJhcukIcg7Bt/jQrDrtEGKCYvMJpNzbqZ41b+x23EQEg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-color-swatch": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatch/-/uui-color-swatch-1.14.0.tgz", - "integrity": "sha512-1c2bNmEqL5J1ZW24adzSsGDwnYFQOyjsI29M+UQdlTZW16s3zh9O97414KIN9ivE+SkgbE7c9lZhNEKyi2IJpw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatch/-/uui-color-swatch-1.16.0.tgz", + "integrity": "sha512-I+0iEkIGXzoDfLUj0duUJsdf71FC1EBqNzAH/X5noiWc+RZiAAw5EvXm7rZO69oDNOQMwt/yMCBLJQp2kYOQTA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-icon-registry-essential": "1.14.0", + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-icon-registry-essential": "1.16.0", "colord": "^2.9.3" } }, "node_modules/@umbraco-ui/uui-color-swatches": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatches/-/uui-color-swatches-1.14.0.tgz", - "integrity": "sha512-UIQysF89CZH0CKwhzbd+1BZAXxUlnCmHoWDGot+Mb4sGZL5esrEB0QQmhJOVO/ehMP+GoFUnh4fWLXUCzRPdvw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatches/-/uui-color-swatches-1.16.0.tgz", + "integrity": "sha512-i58T2PRYzViBTo7OtJAGi5inVF8jxVYBmLL7nb3dpNjUFTZZufRKTr3AsVS7+pCGEogFmyNbcNztmmEMdU4ekA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-color-swatch": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-color-swatch": "1.16.0" } }, "node_modules/@umbraco-ui/uui-combobox": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox/-/uui-combobox-1.14.0.tgz", - "integrity": "sha512-ZKa0KF0ADSX//hm116QdEDjQgyZK1ahY+hzOtdU7EDlJBQdTq3cHtwn6B8JdhPoVlS0Yd3XB+oQ7UXjYn7rGQQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox/-/uui-combobox-1.16.0.tgz", + "integrity": "sha512-zjeNG+7r5J4UgdeWh8Osktkjk/Uret5tu8mUtpp0Z6LIbxISUKEt9QlbjPPorxB3V0ENKUJ2c5KZZtpj7mLihQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-button": "1.14.0", - "@umbraco-ui/uui-combobox-list": "1.14.0", - "@umbraco-ui/uui-icon": "1.14.0", - "@umbraco-ui/uui-popover-container": "1.14.0", - "@umbraco-ui/uui-scroll-container": "1.14.0", - "@umbraco-ui/uui-symbol-expand": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-button": "1.16.0", + "@umbraco-ui/uui-combobox-list": "1.16.0", + "@umbraco-ui/uui-icon": "1.16.0", + "@umbraco-ui/uui-popover-container": "1.16.0", + "@umbraco-ui/uui-scroll-container": "1.16.0", + "@umbraco-ui/uui-symbol-expand": "1.16.0" } }, "node_modules/@umbraco-ui/uui-combobox-list": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox-list/-/uui-combobox-list-1.14.0.tgz", - "integrity": "sha512-CRsRycwyb9CeyNINQ1KztGAHTRhQcphVEl/bLVr3jTtuqSWWxKsGQVDe69iKNAfHuiU3o7MlsUH0+ea296x/8w==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox-list/-/uui-combobox-list-1.16.0.tgz", + "integrity": "sha512-gNFheYUtzMvQudvzoRhDgJk9zziFTxSyu92aYzyoyhh7M098gJfqU+fo7Teqqiuyb0NEiZPThcNrUT9MD2LD3A==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-css": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.14.0.tgz", - "integrity": "sha512-M0zmrjBpDzrb3r+l1qMNGEhJbJSHNeR7PDtpHoMaO96ozaZSL/87XzpwsBklwTR9xyfm+VgDFNTqQXqYnS2e/A==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.16.0.tgz", + "integrity": "sha512-uyr5zWOfqSH2z1He+i8vZVYZk8Bq4iKMXqCerKHuiNoCZOaW9Kg8n+mJXhQ3Kz5+r9RXUbJThMJO/6/8NFYvbQ==", "dev": true, "license": "MIT", "peer": true, @@ -2292,659 +2362,659 @@ } }, "node_modules/@umbraco-ui/uui-dialog": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog/-/uui-dialog-1.14.0.tgz", - "integrity": "sha512-eZdmNLkSW5OAETTZlvUKByQbXv/4/tYznNHCHyWxxGrYuHVHh5sNj+3ZUbZp+VjIy1zd42slKh/KDmYV6pBarQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog/-/uui-dialog-1.16.0.tgz", + "integrity": "sha512-dq+daSQKAIdsP+2QhM6HmU9Nr5VVzbxwQEYLVvAcmYcw4K98TVpP6AyHu5dPDP9vl4EBBXUrrZuXFjU+Mh8/xQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-css": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-css": "1.16.0" } }, "node_modules/@umbraco-ui/uui-dialog-layout": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog-layout/-/uui-dialog-layout-1.14.0.tgz", - "integrity": "sha512-rYlwHk5zsX+eBZLBxI/68W6Q1vb7G/NuZoasquQXZ7jgxRhaRw199YQojtUCWtIowWn2uqqbD2a0RYPs9n3FIg==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog-layout/-/uui-dialog-layout-1.16.0.tgz", + "integrity": "sha512-iRpmlzp1PAUpF6Ol2EWubdABIgpJE6QmBzaQONm3Mmwe1wLxMGp5+o33wHU9WSTh8kDrH/U5mWtua6Xtyf5JFA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-file-dropzone": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-dropzone/-/uui-file-dropzone-1.14.0.tgz", - "integrity": "sha512-GSy0mlR5KsyC9oF3CMB2qwuGiT5P3moVFxanRAO7u8qimRAO2jLS0/8u1QCh120AGRQZzDhw/TJ9XF7NXTWJtA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-dropzone/-/uui-file-dropzone-1.16.0.tgz", + "integrity": "sha512-B3Zy6jlyK68ntaC4idv7fzd9NVyc4VVjn68DgkvnHR76Mp8zmOgT0g7K7/WM33IPw/n/ZfBhM1KEb+ry3i9/bg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-symbol-file-dropzone": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-symbol-file-dropzone": "1.16.0" } }, "node_modules/@umbraco-ui/uui-file-preview": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-preview/-/uui-file-preview-1.14.0.tgz", - "integrity": "sha512-UGxlpKoCVjFYbkNfXcMi0kCSjcocnHlTHH1fyk/Mg5jZ1OZCmV8dnQQKCB139X9FdHZhL0QeZA3KZUYA28iqaQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-preview/-/uui-file-preview-1.16.0.tgz", + "integrity": "sha512-A+jych/xEUOssZjqWtW04nD1GcVOHnonTlPdrDaFh9PhwQAL0PREBbHZnkLJBS4z+HKWhsXOUeQ9ju0YAtbRuQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-symbol-file": "1.14.0", - "@umbraco-ui/uui-symbol-file-thumbnail": "1.14.0", - "@umbraco-ui/uui-symbol-folder": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-symbol-file": "1.16.0", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.16.0", + "@umbraco-ui/uui-symbol-folder": "1.16.0" } }, "node_modules/@umbraco-ui/uui-form": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form/-/uui-form-1.14.0.tgz", - "integrity": "sha512-UoEP62nCNTa4ILDNFX2ASNN95XfUugPhGmtUdKmvTUH6F3NSai2iiLIp/dM+GBC4PJXmt8rzq6NdLqYonkMK+w==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form/-/uui-form-1.16.0.tgz", + "integrity": "sha512-mZVeqQtKirPHCES6TcTywELJi3raBgSKRt2XKCmHMDzclK9P11qPuOve335Jd8WPISsqbbcw4mIAGQpww7TxIg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-form-layout-item": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-layout-item/-/uui-form-layout-item-1.14.0.tgz", - "integrity": "sha512-1ahnmF9Ciw0RC/pRAS3FJ2vVmnpQ6O20bwqJrCTYvJQeqJXV3bzSxYmMY/s6Z5tsoNDzkfYcTHfnti/MmyuFJw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-layout-item/-/uui-form-layout-item-1.16.0.tgz", + "integrity": "sha512-g1xYut9TQzAK1w0fijWyV2PlXJnaMw3MYgytvsEu3XD93hPut4XvkifM8Ja6YxpkRcKQpRRLa4WHroQ6OQY6LQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-form-validation-message": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-form-validation-message": "1.16.0" } }, "node_modules/@umbraco-ui/uui-form-validation-message": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-validation-message/-/uui-form-validation-message-1.14.0.tgz", - "integrity": "sha512-rv+mId8htw/8V3rle5bOjgWK8X+3IX7B+PAvFAfy+lc89OUV+OT04RGy0sg3hhncoPsIT8EhQ2MYunIyh3MwnA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-validation-message/-/uui-form-validation-message-1.16.0.tgz", + "integrity": "sha512-55+WAkF02Im+bG1Xl1AABA7KIGXr5CZTgHbr3MsVVHJMtHv+gQZ04h+0TkvDzKZDSg8ucCXJKyD44Y4gOyS2oA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-icon": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon/-/uui-icon-1.14.0.tgz", - "integrity": "sha512-IdBRPC8xc9leIBRaHmTVoGhxRkz8CNeYjgJLNBauFox5uSkWuE7OE9BUYBJKdZz4k8yHLHHrWHVkcaHvgF+QUw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon/-/uui-icon-1.16.0.tgz", + "integrity": "sha512-x7HX9OnKOTgjbFbSSZ9Pk0+Lf6yo8ggLe6XTnPClu3ByN2fl9/QqshI5lx4oz5Adr/ItSj3zqnNB2JbyM56TLA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-icon-registry": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry/-/uui-icon-registry-1.14.0.tgz", - "integrity": "sha512-N9cXDF6B3R+h2TCaCHkOJUTSsD10Wei8NrldvYL2fhBqG8FgaquqBI/715NGoRtwp9KKz74N/Z6EIn2MBiMaMQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry/-/uui-icon-registry-1.16.0.tgz", + "integrity": "sha512-o4l2bEYKdBcxAlSwEPO+cfnNvkGuGcZRyca026xvIz+nufbc/BBzskzS1UWIIjkFPu64rHEfxP/3KbSld64HYA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-icon": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-icon": "1.16.0" } }, "node_modules/@umbraco-ui/uui-icon-registry-essential": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry-essential/-/uui-icon-registry-essential-1.14.0.tgz", - "integrity": "sha512-NjkNmQpMHLcyGakqGlASyPOr8Vnr8+KCdExfkbDdg07iDFlzyGyNmCkTdzY2tNXsIq5bD1c4nzHYmE76FszorQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry-essential/-/uui-icon-registry-essential-1.16.0.tgz", + "integrity": "sha512-HI4cnYhWpPtWFFgfEltjV6PPhOd3NQ58BhqfbCpRbwmHZUZ0OBzGRl4QgsPNKuhQqmcXene+Twfy8eoRk1/5nQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-icon-registry": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-icon-registry": "1.16.0" } }, "node_modules/@umbraco-ui/uui-input": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input/-/uui-input-1.14.0.tgz", - "integrity": "sha512-FeYiTUzCcZdNtury6B8ZMl66mW/fGfgXMB5HvIVDFp0ik+WpC8vLcQqHgJ/qFxWGF32H0qIsVqLnzcwkAwvRxw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input/-/uui-input-1.16.0.tgz", + "integrity": "sha512-2Mp15ObjyAuRD3bOTs/zuUHqaaMiuDhmGsjeK8ViOrlSMnz/bVUme5scN1OMkNIryVHkENshC4NK7x6++X0/qw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-input-file": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-file/-/uui-input-file-1.14.0.tgz", - "integrity": "sha512-l4RcQWf+0OLM9i9NWvnMkQtzzNcALBRmtiTBLdz6ROFm2Z+S3MuT8vzl0QiduJNWK5gzANu/FFuTL70fIh/BDw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-file/-/uui-input-file-1.16.0.tgz", + "integrity": "sha512-AxepSUJe0LmY4QmBA9UlzhZBBrVF+z88fFUWIH15PICFX0jfsPNIeiwQKlv7cN5pEInUh6qCRN64z8icf8fcdw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-action-bar": "1.14.0", - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-button": "1.14.0", - "@umbraco-ui/uui-file-dropzone": "1.14.0", - "@umbraco-ui/uui-icon": "1.14.0", - "@umbraco-ui/uui-icon-registry-essential": "1.14.0" + "@umbraco-ui/uui-action-bar": "1.16.0", + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-button": "1.16.0", + "@umbraco-ui/uui-file-dropzone": "1.16.0", + "@umbraco-ui/uui-icon": "1.16.0", + "@umbraco-ui/uui-icon-registry-essential": "1.16.0" } }, "node_modules/@umbraco-ui/uui-input-lock": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.14.0.tgz", - "integrity": "sha512-wt/VL43EpHJcvf9GEnXSuHG/iW7yI7vD3wEWI+wgCKv9SdTzE/M4aPon/pxnQsVCvGvWhWvdFeGdlfwhXSurLQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.16.0.tgz", + "integrity": "sha512-FTLj/2s+VImEtKe1GPSkAC2pmTabz5cGzvaFB/7xrJj/1evVxXGu8qQyyL96WoDe+RAmBNYfrnGx7OUSVhEyRw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-button": "1.14.0", - "@umbraco-ui/uui-icon": "1.14.0", - "@umbraco-ui/uui-input": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-button": "1.16.0", + "@umbraco-ui/uui-icon": "1.16.0", + "@umbraco-ui/uui-input": "1.16.0" } }, "node_modules/@umbraco-ui/uui-input-password": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-password/-/uui-input-password-1.14.0.tgz", - "integrity": "sha512-XCc/0QJH2w9PZJPouhbJbMR+w0QKUusut1MWW9NsfzRheHkcDuzc3Vf69OLFGGww/FjYjkxwT9as/2aLXxotjw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-password/-/uui-input-password-1.16.0.tgz", + "integrity": "sha512-0gg8nAVHsMYlQscG76PN4L8ha3CpW15crlzgj4TMaW24OIgZ0khV18ZImJ5n9wv/zrq8LsrwJTyZ5/a/soaKyQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-icon-registry-essential": "1.14.0", - "@umbraco-ui/uui-input": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-icon-registry-essential": "1.16.0", + "@umbraco-ui/uui-input": "1.16.0" } }, "node_modules/@umbraco-ui/uui-keyboard-shortcut": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-keyboard-shortcut/-/uui-keyboard-shortcut-1.14.0.tgz", - "integrity": "sha512-G3LCdfP5uPe00bg8kKBMZhLan8gH7QbSRMX7aMsT+Fc6nAyWWTwJ/Qt4qJjk/fbeHts1OWD+sbHdRtXK+DotRA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-keyboard-shortcut/-/uui-keyboard-shortcut-1.16.0.tgz", + "integrity": "sha512-z9wlhONxtwkUCkPEKqt/vSH1qOTwHCIM2Cj/DQ21+bfWcywUR7cAp0vRveapymDn4eHSuRra5lrG7xgLYsYuVg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-label": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-label/-/uui-label-1.14.0.tgz", - "integrity": "sha512-a22p01O0CqnNTxQxmjPwCFBFXi5KKzhpno4DXjSDVTmeJc85IxiR5ODAELKHJf6XwZMkOv+QG+AZuIJFVEZ13Q==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-label/-/uui-label-1.16.0.tgz", + "integrity": "sha512-1vQAKUR+frDEth8AMLS5KKpVK2LHD61lWUG95yMypF5C2+YBmzXb70QEakOubTMsmLnYcU3hfORfA5Wp9cYPnw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-loader": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader/-/uui-loader-1.14.0.tgz", - "integrity": "sha512-2/HNDk0AZQ992hHYQk+VP5GetofSKxCsLf77/wiswyz48kM9eJ9wkieovxzLK1IuOQs0A+cCe2NnU/z5fZnvvw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader/-/uui-loader-1.16.0.tgz", + "integrity": "sha512-wcFUljPcrAR6YYuj5XLmtMpZBvzTBcakr9p+vISOoC3ta8UlE+OOLiQn+XYzTuV/ZbM77EHh5EEyiO5L45fQew==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-loader-bar": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-bar/-/uui-loader-bar-1.14.0.tgz", - "integrity": "sha512-hAviuSx29RPWpYIqmWiGmW31r3nj8A1VGobmdVwR0BJHfdxee57ZrNGsEZhK6pzuHSvshGTITNwLk03E1UA/Nw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-bar/-/uui-loader-bar-1.16.0.tgz", + "integrity": "sha512-xh6RCS60WPWPzf0dAA+lTTt0rF8hksQsYBLwITBsR/5k3qswhT9Ctu/2LvqUXoLPyEFTecA4fyqZK+NzhjZrdQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-loader-circle": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-circle/-/uui-loader-circle-1.14.0.tgz", - "integrity": "sha512-I+rcgwbxwKGxLzVCGZ3qT4e/sK8CofTPzdCmh1BpNlKrWpuJ9NGgysrGs7V1IleJJxIXuzD+BBlIoGxuCwBJQg==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-circle/-/uui-loader-circle-1.16.0.tgz", + "integrity": "sha512-jawUHoiUwwZkp5YOLFlF00WvZ5yPowfbi22TufSyfls5hMajJM/p21IrCTStrc4ZimqyheaaYe/AqdGLDimfSQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-menu-item": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.14.0.tgz", - "integrity": "sha512-8Pc68dJLwl7GrbGIRD7MpyMSBkuz8/CtzuLhygrFHK608crg5bBPC1+Zdt3VdkqDk7QZRd5rtL+pYgEJm87Q4A==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.16.0.tgz", + "integrity": "sha512-tyyuehJSj1BU/EEsQ1LHN8eg+gcAKCzqGMwwpepEtKZDd7p1/Ioq1KEn2e20UOihXab5rFv5UNEWSeyEYRqL4Q==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-loader-bar": "1.14.0", - "@umbraco-ui/uui-symbol-expand": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-loader-bar": "1.16.0", + "@umbraco-ui/uui-symbol-expand": "1.16.0" } }, "node_modules/@umbraco-ui/uui-modal": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-modal/-/uui-modal-1.14.0.tgz", - "integrity": "sha512-3Ux1guj029PIcUn4nmPUU29Oqxq1HoRUib3lWoRRIgJ3F8WyGms+GEgCMj4v/LzIdezczqVtxKdOMcLIm2gvcQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-modal/-/uui-modal-1.16.0.tgz", + "integrity": "sha512-hqlXHjlGxEWEeX5c7W0xNlH25xDbb8vdgBIfYGUkBfrYrgO3j+AJ/B7OvmgWJogFTOHRRaPUvKDi8DkDnDH4zw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-pagination": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-pagination/-/uui-pagination-1.14.0.tgz", - "integrity": "sha512-jP906bsiXOBpAdF/ZVi0hlRyR/+HX52ocjItlvMJWc2Xt4Fpzms7W90buYcG4hvz7g0snKy84JgTMup5vxf2iQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-pagination/-/uui-pagination-1.16.0.tgz", + "integrity": "sha512-bZQl5BwiYHSQqc0bjajQbu8ZX+z4qe56t6PiT6s+VUj6huXOOrT72hpY2u+ZE22sAWPaIu42Kg9ulxNV2pulRw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-button": "1.14.0", - "@umbraco-ui/uui-button-group": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-button": "1.16.0", + "@umbraco-ui/uui-button-group": "1.16.0" } }, "node_modules/@umbraco-ui/uui-popover": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover/-/uui-popover-1.14.0.tgz", - "integrity": "sha512-blMgYLRlEUon7vAQ6s1KE0hNBgyuMeI7ugxHCMDAFwgtHIh9VO2YfPAqlKBkofM72R9QZDbkCg1tOUuuF0yX1Q==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover/-/uui-popover-1.16.0.tgz", + "integrity": "sha512-ZtHPdupRjxwuSHmY5EiiGtZMBi5UsAyHOucn5SxMgdyHT7bRxrV1ebCblDu4eikXg/xx1nTDSFmmW4rXLftULg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-popover-container": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover-container/-/uui-popover-container-1.14.0.tgz", - "integrity": "sha512-1wG99PbKDdkzvV3W2avF5/zU7XLoxmui125EfKwCdDYuE5fsR1alBZHsdk6PvFXXpcbGaNJ/dWyWg+Ip687HeA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover-container/-/uui-popover-container-1.16.0.tgz", + "integrity": "sha512-3N8M4hPQFcthVfqfhdCMX9B4q+0sG2zizoQf2SvDoLp3GAqND2zw2cwYClMy8HJh3XH9JINljz3PliyKMXVaXw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-progress-bar": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-progress-bar/-/uui-progress-bar-1.14.0.tgz", - "integrity": "sha512-ImFS/QWWSZ9oExINb8thaQ6mexFpq62AbvZoVDzdBrje1pf9FErSs4u1XReS9iRtkE1kyGiyY302a4fAoKyMtQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-progress-bar/-/uui-progress-bar-1.16.0.tgz", + "integrity": "sha512-GE/ZW5Rq82LgVbArppIG8Zkd6QFmCTGEV4Iq5V4KPOl5iSVu2yuYJCDD77aR1LgclSjk1YiJ1/oge94RXqAtOA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-radio": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-radio/-/uui-radio-1.14.0.tgz", - "integrity": "sha512-PbQ0SloYLJE6YUldwPU5MoBj+/zIQifNhaEYb2Ss2Ka7LFXFAZ9TvXr/INreh4zxI9DSeXirj41k3O+7fbB/Cg==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-radio/-/uui-radio-1.16.0.tgz", + "integrity": "sha512-r3JmVGeGzCzUPEKdOzxunsoRO2q7zGoI5eUtrSXdLSFiR2klW+hti/fjvqvruqzRZRjB0oumbJfMU4IxHcZblw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-range-slider": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-range-slider/-/uui-range-slider-1.14.0.tgz", - "integrity": "sha512-ha798qXr/J3Kjd++eHBYdfqFSVKvSg9TWd+aAhAVj9rVb0Q8mbuinqUcWN9ZHukTNl7lG0/4HbTfM80Lm5V6TA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-range-slider/-/uui-range-slider-1.16.0.tgz", + "integrity": "sha512-9qx3Qj8kmIyHRbcVNexWTs4eGjsxs9FkjP7czpC1P0CPJFIt8LzeB6gBwSS/nJGuIo06RQ42qOc8FOza2tN+jA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-ref": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref/-/uui-ref-1.14.0.tgz", - "integrity": "sha512-bjKcCLRxcu6HR+0kRrLpdit449FHhc16x1LZPncTtjAXN+kZYVmBiQ1QL2/W1l734vRm68nmHVuE5LB1Y2RuIw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref/-/uui-ref-1.16.0.tgz", + "integrity": "sha512-+ptIzEx8a3Oy4XL6TFibR5Q5lWDpjCSPCN2DgIitBj9C0R8zWbBo8sxj2iLGP4RsBiHeTUbDiJlSY1seo2E+Ew==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-ref-list": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-list/-/uui-ref-list-1.14.0.tgz", - "integrity": "sha512-rVUldYm4FMAM3SJ8cCbvwdTm4LL9iz3LoFeTxXpfuo6STP+Y26kqR5z5hex6rUcX51se5yEp7PpQDO5bHHz5OA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-list/-/uui-ref-list-1.16.0.tgz", + "integrity": "sha512-MRxTX8CDvquBkkEGfpPsX5ttnsPGJ+Kb1KfR+arueXazQ9XfqyoFCAWWXfOxGL7A5txGTMnKEfj59dyLeCec5Q==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-ref-node": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node/-/uui-ref-node-1.14.0.tgz", - "integrity": "sha512-d10iNjb5x3klPZzzt4AZqeGJ3xbqbaLc4NJb4lQ6C6+djLL+tsJf1MN1vC17dC/wPJ5B894iSBaha0fa8fVfMQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node/-/uui-ref-node-1.16.0.tgz", + "integrity": "sha512-4IO02sBoJLlErxXPeFBXTtOZzQeFbCf0flpHCjMZ+vWKZ6GarlUMSvbXjuzh5SBEveVxWYhjd7Z7lP+g2pOHGw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-icon": "1.14.0", - "@umbraco-ui/uui-ref": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-icon": "1.16.0", + "@umbraco-ui/uui-ref": "1.16.0" } }, "node_modules/@umbraco-ui/uui-ref-node-data-type": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-data-type/-/uui-ref-node-data-type-1.14.0.tgz", - "integrity": "sha512-DcwR0qltykP1NHT8aRqbgQ4/PF2h64ehvBUpEeYg7U9/1xgpWlelkHlZ6CREzZUENaOFrpJzmhzbQWxYa7XKWA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-data-type/-/uui-ref-node-data-type-1.16.0.tgz", + "integrity": "sha512-0yRbSOoKl5gSAnRIEXTdFYlrt4NSvuLx1+TuQyeE/CV8lfObGqM1+y+ueX0AgPuNTXAf7j5rPIRLsVJHfCs2MA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-ref-node": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-ref-node": "1.16.0" } }, "node_modules/@umbraco-ui/uui-ref-node-document-type": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-document-type/-/uui-ref-node-document-type-1.14.0.tgz", - "integrity": "sha512-71A3vJa5SAZd6rTRaa5r/0fV+fr/Am4T5rZu8gdSfEw52ppkVNbg5iHqIwFKN2QDBzKI9GFSrjSVPmRJIsTNTQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-document-type/-/uui-ref-node-document-type-1.16.0.tgz", + "integrity": "sha512-ORBBH6GRq5VFTNZd++f7dXCLJdgEGhtd1rcdbxjqtYnJrKeJ0dBNhJkF3kLoSQ1MiOG1SHOckGUZr5nLMUhc/w==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-ref-node": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-ref-node": "1.16.0" } }, "node_modules/@umbraco-ui/uui-ref-node-form": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-form/-/uui-ref-node-form-1.14.0.tgz", - "integrity": "sha512-hVF6NtGqAZ0GRr28H2q2jOD7T4fTD837sJw7kJTLdzV5Oatu0rqWs4nmV6KpUCJjoUGYFWg+fKc5vvrF+gXXFA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-form/-/uui-ref-node-form-1.16.0.tgz", + "integrity": "sha512-Z3m2toN+LcZOXVe/3q6d9kyPyWXR9l8CJSk1NkEn/ojMYrRzmo5AW92xWw/twHV8bRsEBDSeKxSKMVGnJVyUHg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-ref-node": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-ref-node": "1.16.0" } }, "node_modules/@umbraco-ui/uui-ref-node-member": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-member/-/uui-ref-node-member-1.14.0.tgz", - "integrity": "sha512-Xy1mCgaPDLWnpXyfU1KgaEX+u04JXKnkbrj92d43k4HB30tbI/8BjwyYEaT3Phvs4fmUC0h4ege41Zu8aYfqDg==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-member/-/uui-ref-node-member-1.16.0.tgz", + "integrity": "sha512-v9m/e5krM1IPV1gI/9dqVKgGYthyWXDlq9lCdiigpTfzv7xkCF+LPEmVksDZaKD498gGYtbYJReCXUxCwjxGTA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-ref-node": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-ref-node": "1.16.0" } }, "node_modules/@umbraco-ui/uui-ref-node-package": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-package/-/uui-ref-node-package-1.14.0.tgz", - "integrity": "sha512-MNF0n9nlC6W7Ove9fm7+YwhWwEL5+nUmhYZySEb3YAwjOXHDgL9hHS0gmT1YXxu+66RtBXdqUkZbfI2AVKv7qw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-package/-/uui-ref-node-package-1.16.0.tgz", + "integrity": "sha512-6z/oa4qX+L746nEet0EDx88roSTcfjnzQj5fH2ebW4WJ6Arh/b+QmPOE3UEn2QiqjJLovkIhNcwf0m9PM7rSSw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-ref-node": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-ref-node": "1.16.0" } }, "node_modules/@umbraco-ui/uui-ref-node-user": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-user/-/uui-ref-node-user-1.14.0.tgz", - "integrity": "sha512-AFycox1NtGnhVtGgJ3Sg0fCAUlOf38V7S2KPrFubAFmjbxcddWqlMVWzxTcUbUDE2TL5KHnU/JCUxf4BQO1pUw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-user/-/uui-ref-node-user-1.16.0.tgz", + "integrity": "sha512-TdYTh+1pZfOFD9dKBtti1oDF1Pk5Bp3PyNKf1JLtcPm8uD/UPDxRkIYV7It04E6P7VWusdRabdlv/q9PRimA5g==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-ref-node": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-ref-node": "1.16.0" } }, "node_modules/@umbraco-ui/uui-scroll-container": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-scroll-container/-/uui-scroll-container-1.14.0.tgz", - "integrity": "sha512-N+jYDLTCmo5vC1Mutv/d/mWMivkbWXI1AWM20i7wDQ3U8R6VsbA4Rr7Ne8V9jSnOrgQY9PHrTE2OI99S0bFrnw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-scroll-container/-/uui-scroll-container-1.16.0.tgz", + "integrity": "sha512-+ArdQO09sGB1t24rzi+rk3YsZZayZRr5aKny53qAKkklJg0IDCJ+Vme9DvuSk0HBEzCe0YF313lv5mYjxFwCzQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-select": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-select/-/uui-select-1.14.0.tgz", - "integrity": "sha512-/hTUiJ38/gpEf4pk7AWauy/i4o+DYkJR9CpdkL8oyjjwjkmJAVL817v4sXUcTvuaYYVrVqBY1M7U3FgEumKHVw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-select/-/uui-select-1.16.0.tgz", + "integrity": "sha512-/tXty/HSqTAwnqsmLIsDc8LsE7XW0pZaCu+B/Ov3FjYQSb312AqXBwP7Z59gAbh2M0XvI3qxcA/sLcFndqN1oA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-slider": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.14.0.tgz", - "integrity": "sha512-biiJ7+aJnkfaPcNF4fuIIGfEmvmTXoOmI56BZN4ICRo1+wntVkfY64hjGTQ2gPV/d26eK1FNyUFpRl8leIxjVA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.16.0.tgz", + "integrity": "sha512-zWXe+SOzXbhO2tN+DnVXbefEWICZ+FHCR1EGldZdab3hQO53M4HOKqTBd1akE6iFli7FN4BOnELGjnMnupaqvw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-symbol-expand": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-expand/-/uui-symbol-expand-1.14.0.tgz", - "integrity": "sha512-8cXPlHmIoajexztcHKGdTrmbp+NR4O0Le+EtQrRMqf6S8apbw7SNy98h3CeSb6Gq2ZTXdXxzZnCtyo+znxpFHA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-expand/-/uui-symbol-expand-1.16.0.tgz", + "integrity": "sha512-w9i+deCNhZ3TzwgMx2glGbpyvXQHyP0kCmuazXi4cYGFtEXM48d1OScm/PrGs04ICNuqEIwY/IZ+PGfRSI27lA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-symbol-file": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file/-/uui-symbol-file-1.14.0.tgz", - "integrity": "sha512-vWx6C/0xT+SUk3LTeqrzbS4P6YXPzN0kqqnUH7riHACYNZxmpAgB8EVU0MzlMdW/TpiMcapw0/KHYuMtBZ8Nkw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file/-/uui-symbol-file-1.16.0.tgz", + "integrity": "sha512-8iyZCjVAFvKrz1m0RTPiZmbXYLyb0Gs2blgg/uPyBzpNvptnXgx29UVTzITu2xvqVvwvureFNcxqeYL5WsfCiA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-symbol-file-dropzone": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-dropzone/-/uui-symbol-file-dropzone-1.14.0.tgz", - "integrity": "sha512-AAb/Cv/INzjonxc4fDR1n0YMs2hO+O+fYtsW9VyAUxqLHnhxNFufwPU80v1Y0nNnKuaNlSAdGwM/4QJujwhj3w==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-dropzone/-/uui-symbol-file-dropzone-1.16.0.tgz", + "integrity": "sha512-d9VJQTEBKwTHrvgPAXLgG4m3quDbxg1EhJhE03cxZr/yrZ81I2TD3wd4Pt9uxL1kvpZ95mP2vDfbedUfm/0fww==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-symbol-file-thumbnail": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-thumbnail/-/uui-symbol-file-thumbnail-1.14.0.tgz", - "integrity": "sha512-BBQKo03UVTPq6MO6GVDPv40w3Nizy8LRKQ6quNuhB0UcrWkqOAoJEMX/afX17oGtCoONN/Zq54mmXWgHD8yo1Q==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-thumbnail/-/uui-symbol-file-thumbnail-1.16.0.tgz", + "integrity": "sha512-PMm3lTtIAwyE+6Erz2xiamKPuHhqazk2aWHgqC9fzD/0ROlWQMYEP3M99onp8/YCIprzfvXPuH6ofs6kq9bY7Q==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-symbol-folder": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-folder/-/uui-symbol-folder-1.14.0.tgz", - "integrity": "sha512-Z+Kcdk2QyuLf+hKNTacdM6jeNo+wexZ0ktUPbVHJUjYaHuyzqNVV0Du8NJyFBMwyiomV9xLKxQi0YeI/aDg+Cg==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-folder/-/uui-symbol-folder-1.16.0.tgz", + "integrity": "sha512-vATvt+AcfP9pZxh99DKaq/wrD60EN4nvdtZ/BpHH6MOhX32T8LEboh57XisHmGamUSGbm2jQhASJTt+7cvjI/w==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-symbol-lock": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-lock/-/uui-symbol-lock-1.14.0.tgz", - "integrity": "sha512-dLcc1TkD541ikC+iOEguJmXsJYphqBwEmt2fqVJEDYddmGUf1ZlUNJSjkamU8vaER6NgNIhmqByU0Lv2SdDrjQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-lock/-/uui-symbol-lock-1.16.0.tgz", + "integrity": "sha512-mAFnPdUzlddfdLMTkBetCTnShV3QTWMpjqaG5fCaauizWmReye/rCwDur51URL+VkWMIWp29JvfYIIm8Yk+ZGg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-symbol-more": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-more/-/uui-symbol-more-1.14.0.tgz", - "integrity": "sha512-HgelD3iF2YMRrCumw8YqeVW/OsByGMWF1ILk8aylyS+4faIEKhnKIpLlw0WovFBYJQpWilcm/JtMqBqa6DfMvg==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-more/-/uui-symbol-more-1.16.0.tgz", + "integrity": "sha512-WBd/6SNLVP04WU0Em8Uc9/GXsKYpYdHzlEjh7w5oU1TfbDEiNq1lXkOlpuvL79wJtd/2fTKfqui02+i79KU7ig==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-symbol-sort": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-sort/-/uui-symbol-sort-1.14.0.tgz", - "integrity": "sha512-cXahfWqCZuu1AOQyrycTmKgZXzBq8v+cqLsEeE929ZokVD35AsTXkLbo6kLN+zVRXAz5kNyaERrfS8yLoZFtWA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-sort/-/uui-symbol-sort-1.16.0.tgz", + "integrity": "sha512-hBhvUmkPc5WgFcjKDm6jtQq2USCO+ysveJRI1oJReiZkyj06IjU5mYddUL/sOG4L7Ud6OFqVbY002Uw+j9QpYQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-table": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-table/-/uui-table-1.14.0.tgz", - "integrity": "sha512-4ko7jaoH24qLnlwo6jWAuphmkcNL/7RXcDOSgW8aBc0x3nXG2Ufk4PQi0z+k614eDW6+seMZASAsnMx94XhLEQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-table/-/uui-table-1.16.0.tgz", + "integrity": "sha512-cVq84cwbgOvjoTn+5L4eboXPGkYdcIkWm/oU8GxbR1OdUtgPtqnPwB51Ial6ylyIHqvYbCDmDMzrjjnrB/qfJw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-tabs": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tabs/-/uui-tabs-1.14.0.tgz", - "integrity": "sha512-m7OEIFK9YD2z7PgD78+U0uFacob/9DqN4nlZXxOkaj/tIxcBbWDXCqRnVBkhkxJKocs6NBYaGi2XHBq9F7/S/w==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tabs/-/uui-tabs-1.16.0.tgz", + "integrity": "sha512-FBToNg7zgB9paPQPbpnuC66KAMz3iR/F+tmLhjWnwGSit7ubFspPqgrReSjVS9zdd+zbi7wTJOcmKnHmoyP1bw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-button": "1.14.0", - "@umbraco-ui/uui-popover-container": "1.14.0", - "@umbraco-ui/uui-symbol-more": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-button": "1.16.0", + "@umbraco-ui/uui-popover-container": "1.16.0", + "@umbraco-ui/uui-symbol-more": "1.16.0" } }, "node_modules/@umbraco-ui/uui-tag": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tag/-/uui-tag-1.14.0.tgz", - "integrity": "sha512-CphycjqzlUnMA+eEgJCCLKtmsCn5ileGPDn5ei427dc5P5wOEU6aGKqeAGMivP6db4UhUMjh3g0xXfQCKbqEaA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tag/-/uui-tag-1.16.0.tgz", + "integrity": "sha512-u6pBhOEvXYvUNTxNO1Ftcnflii1CmeuvNAXxuIj8TMmTXGXWmap0W5cGmzlEbbLAMGLv56AJXdz3rKDrWNyTvg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-textarea": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-textarea/-/uui-textarea-1.14.0.tgz", - "integrity": "sha512-l/hyV78IQn+Akb4UA0AtOTsdYJgCun7eC+i0vaOeNANXrO/B0Dhr2yembO0/mf/u2RxIFeOSsW8GUYixrIxSPw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-textarea/-/uui-textarea-1.16.0.tgz", + "integrity": "sha512-xTO4i/m4Q7wEeaxmV1bxT5e1bnLRJ1CoG+awe2FKGq6xw2ZHgksSrm6j3Ddbm5WzV019hIeVl22bnVQ5gOwrww==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@umbraco-ui/uui-toast-notification": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification/-/uui-toast-notification-1.14.0.tgz", - "integrity": "sha512-5pb4miAkdgoURoTQGvXQZoUHWIR4tgdUe78hPr2et3xSNw+N0Y/LHlDX1Bo9FBOKEvtFT6YHM0nqOIjW9/RpKw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification/-/uui-toast-notification-1.16.0.tgz", + "integrity": "sha512-ziOJ4uyQpIVCBym2RlZFJOuOb2feNr1sP0RxUjhXToREJdG2MH2bgYyy76K0OCZ7a+JKCsHdaBH4XquXIH93VA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-button": "1.14.0", - "@umbraco-ui/uui-css": "1.14.0", - "@umbraco-ui/uui-icon": "1.14.0", - "@umbraco-ui/uui-icon-registry-essential": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-button": "1.16.0", + "@umbraco-ui/uui-css": "1.16.0", + "@umbraco-ui/uui-icon": "1.16.0", + "@umbraco-ui/uui-icon-registry-essential": "1.16.0" } }, "node_modules/@umbraco-ui/uui-toast-notification-container": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-container/-/uui-toast-notification-container-1.14.0.tgz", - "integrity": "sha512-5ai853OExMOFrKTrAgvx4OkRNJY8gfIA3UmLBQSVE4E065I0xW4F+L9A3foEU4so2z01OIwvJ53RRk7JriohTg==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-container/-/uui-toast-notification-container-1.16.0.tgz", + "integrity": "sha512-8HwiYkOA8Rsxpp2ZGsDTq16odV7Ja7xAAp/0BcdosdQYn6L4KUbSimulGaP/Q1KATUCFT7QflQiv0gnwuPpngQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-toast-notification": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-toast-notification": "1.16.0" } }, "node_modules/@umbraco-ui/uui-toast-notification-layout": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-layout/-/uui-toast-notification-layout-1.14.0.tgz", - "integrity": "sha512-8WaiSNLB8NoKJMRQCqFh+KkhjOStXcJ+yLJJR/AM6HF6Pc0tYl+R3zM4LY9WJjQQEOXENcTUPMURJSwpJ2fsGA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-layout/-/uui-toast-notification-layout-1.16.0.tgz", + "integrity": "sha512-OTrTAGUPe8EQRuCWJD8GsCw8MfNJuXx50NLZLDDZKzw3TlDiWMxUD0c4l6zOMy4ih7n7D5sMekHqonW5x6lVuA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-css": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-css": "1.16.0" } }, "node_modules/@umbraco-ui/uui-toggle": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.14.0.tgz", - "integrity": "sha512-s8//Y2LAqDQ3h4C3PA9yJcVXF2H6gnv2NzMZ22KotJQT9+yhhR3UrOlndOZKkWqKtDxwSLEp9EmyITgDdEoT3A==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.16.0.tgz", + "integrity": "sha512-opFdwN0LlH6l1xlzEv+e9tvLgySXRr4Ug5LBlzNRJKC/WhinUSq/okerIVyUJgk4oKdZV/y7T7u/07LiekCTAA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0", - "@umbraco-ui/uui-boolean-input": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0", + "@umbraco-ui/uui-boolean-input": "1.16.0" } }, "node_modules/@umbraco-ui/uui-visually-hidden": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-visually-hidden/-/uui-visually-hidden-1.14.0.tgz", - "integrity": "sha512-wGbMiw+UuMYayMDBau5dD2B3HX2tFPlnOftvD9Z+FNKnGnU5e/V+QInCYy7FlywBQ5fDpfKcXseud/kONGRmsA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-visually-hidden/-/uui-visually-hidden-1.16.0.tgz", + "integrity": "sha512-fqcv9gZUey2FkE2IRWuDgpk+D5XCdC1gnmQ4bIlAs03cMhl2BWP7U04Zo1u78jcWCbjxfnp60rfE6h11ukd5sg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@umbraco-ui/uui-base": "1.14.0" + "@umbraco-ui/uui-base": "1.16.0" } }, "node_modules/@ungap/structured-clone": { @@ -2953,6 +3023,20 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/acorn": { "version": "8.14.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", @@ -2991,6 +3075,16 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -3205,24 +3299,40 @@ "node": ">=8" } }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/c12": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/c12/-/c12-2.0.1.tgz", - "integrity": "sha512-Z4JgsKXHG37C6PYUtIxCfLJZvo6FyhHJoClwwb9ftUkLpPSkuYqn6Tr+vnaN8hymm0kIbcg6Ey3kv/Q71k5w/A==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/c12/-/c12-3.3.0.tgz", + "integrity": "sha512-K9ZkuyeJQeqLEyqldbYLG3wjqwpw4BVaAqvmxq3GYKK0b1A/yYQdIcJxkzAOWcNVWhJpRXAPfZFueekiY/L8Dw==", "dev": true, "license": "MIT", "dependencies": { - "chokidar": "^4.0.1", - "confbox": "^0.1.7", + "chokidar": "^4.0.3", + "confbox": "^0.2.2", "defu": "^6.1.4", - "dotenv": "^16.4.5", - "giget": "^1.2.3", - "jiti": "^2.3.0", - "mlly": "^1.7.1", - "ohash": "^1.1.4", - "pathe": "^1.1.2", - "perfect-debounce": "^1.0.0", - "pkg-types": "^1.2.0", + "dotenv": "^17.2.2", + "exsolve": "^1.0.7", + "giget": "^2.0.0", + "jiti": "^2.5.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^2.0.0", + "pkg-types": "^2.3.0", "rc9": "^2.1.2" }, "peerDependencies": { @@ -3294,16 +3404,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, "node_modules/citty": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", @@ -3341,6 +3441,16 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, "node_modules/colord": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", @@ -3366,9 +3476,9 @@ "dev": true }, "node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", "dev": true, "license": "MIT" }, @@ -3498,6 +3608,36 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/default-browser": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", + "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -3515,6 +3655,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", @@ -3608,9 +3761,9 @@ "dev": true }, "node_modules/dompurify": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz", - "integrity": "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.0.tgz", + "integrity": "sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==", "dev": true, "license": "(MPL-2.0 OR Apache-2.0)", "peer": true, @@ -3619,9 +3772,9 @@ } }, "node_modules/dotenv": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", - "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "version": "17.2.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", + "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -4283,22 +4436,51 @@ "node": ">=0.10.0" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/eventsource": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/exsolve": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", "micromatch": "^4.0.4" }, "engines": { @@ -4326,6 +4508,18 @@ "reusify": "^1.0.4" } }, + "node_modules/fetch-cookie": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-2.2.0.tgz", + "integrity": "sha512-h9AgfjURuCgA2+2ISl8GbavpUdR+WGAM2McW/ovn4tVccegp8ZqCKWSBR8uRdM8dDNlx5WdKRWxBYUwteLDCNQ==", + "dev": true, + "license": "Unlicense", + "peer": true, + "dependencies": { + "set-cookie-parser": "^2.4.8", + "tough-cookie": "^4.0.0" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -4395,32 +4589,6 @@ "is-callable": "^1.1.3" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -4527,9 +4695,9 @@ } }, "node_modules/giget": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.5.tgz", - "integrity": "sha512-r1ekGw/Bgpi3HLV3h1MRBIlSAdHoIMklpaQ3OQLFcRw9PwAj2rqigvIbg+dBUI51OxVI2jsEtDywDBjSiuf7Ug==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz", + "integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==", "dev": true, "license": "MIT", "dependencies": { @@ -4537,21 +4705,13 @@ "consola": "^3.4.0", "defu": "^6.1.4", "node-fetch-native": "^1.6.6", - "nypm": "^0.5.4", - "pathe": "^2.0.3", - "tar": "^6.2.1" + "nypm": "^0.6.0", + "pathe": "^2.0.3" }, "bin": { "giget": "dist/cli.mjs" } }, - "node_modules/giget/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -4957,6 +5117,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -4978,6 +5154,25 @@ "node": ">=0.10.0" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", @@ -5126,6 +5321,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -5139,9 +5350,9 @@ "dev": true }, "node_modules/jiti": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", - "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "dev": true, "license": "MIT", "bin": { @@ -5155,10 +5366,11 @@ "dev": true }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -5248,17 +5460,17 @@ } }, "node_modules/linkifyjs": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.3.1.tgz", - "integrity": "sha512-DRSlB9DKVW04c4SUdGvKK5FR6be45lTU9M76JnngqPeeGDqPwYc0zdUErtsNVMtxPXgUWV4HbXbnC4sNyBxkYg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.3.2.tgz", + "integrity": "sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==", "dev": true, "license": "MIT", "peer": true }, "node_modules/lit": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.0.tgz", - "integrity": "sha512-DGVsqsOIHBww2DqnuZzW7QsuCdahp50ojuDaBPC7jUDRpYoH0z7kHBBYZewRzer75FwtrkmkKk7iOAwSaWdBmw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.1.tgz", + "integrity": "sha512-Ksr/8L3PTapbdXJCk+EJVB78jDodUMaP54gD24W186zGRARvwrsPfS60wae/SSCTCNZVPd1chXqio1qHQmu4NA==", "dev": true, "license": "BSD-3-Clause", "peer": true, @@ -5269,22 +5481,22 @@ } }, "node_modules/lit-element": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.2.0.tgz", - "integrity": "sha512-MGrXJVAI5x+Bfth/pU9Kst1iWID6GHDLEzFEnyULB/sFiRLgkd8NPK/PeeXxktA3T6EIIaq8U3KcbTU5XFcP2Q==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.2.1.tgz", + "integrity": "sha512-WGAWRGzirAgyphK2urmYOV72tlvnxw7YfyLDgQ+OZnM9vQQBQnumQ7jUJe6unEzwGU3ahFOjuz1iz1jjrpCPuw==", "dev": true, "license": "BSD-3-Clause", "peer": true, "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit-labs/ssr-dom-shim": "^1.4.0", "@lit/reactive-element": "^2.1.0", "lit-html": "^3.3.0" } }, "node_modules/lit-html": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.0.tgz", - "integrity": "sha512-RHoswrFAxY2d8Cf2mm4OZ1DgzCoBKUKSPvA1fhtSELxUERq2aQQ2h05pO9j81gS1o7RIRJ+CePLogfyahwmynw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.1.tgz", + "integrity": "sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA==", "dev": true, "license": "BSD-3-Clause", "peer": true, @@ -5320,6 +5532,17 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/luxon": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + } + }, "node_modules/markdown-it": { "version": "14.1.0", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", @@ -5340,9 +5563,9 @@ } }, "node_modules/marked": { - "version": "15.0.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", - "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-17.0.1.tgz", + "integrity": "sha512-boeBdiS0ghpWcSwoNm/jJBwdpFaMnZWRzjA6SkUMYb40SVaN1x7mmfGKp0jvexGcx+7y2La5zRZsYFZI6Qpypg==", "dev": true, "license": "MIT", "peer": true, @@ -5350,7 +5573,7 @@ "marked": "bin/marked.js" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/mdurl": { @@ -5408,84 +5631,40 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "node_modules/monaco-editor": { + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.54.0.tgz", + "integrity": "sha512-hx45SEUoLatgWxHKCmlLJH81xBo0uXP4sRkESUpmDQevfi+e7K1VuiSprK6UpQ8u4zOcKNiH0pMvHvlMWA/4cw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" + "dompurify": "3.1.7", + "marked": "14.0.0" } }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/monaco-editor/node_modules/dompurify": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.7.tgz", + "integrity": "sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==", "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "(MPL-2.0 OR Apache-2.0)", + "peer": true }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/monaco-editor/node_modules/marked": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.0.0.tgz", + "integrity": "sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==", "dev": true, "license": "MIT", + "peer": true, "bin": { - "mkdirp": "bin/cmd.js" + "marked": "bin/marked.js" }, "engines": { - "node": ">=10" - } - }, - "node_modules/mlly": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", - "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.14.0", - "pathe": "^2.0.1", - "pkg-types": "^1.3.0", - "ufo": "^1.5.4" + "node": ">= 18" } }, - "node_modules/mlly/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/monaco-editor": { - "version": "0.52.2", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.2.tgz", - "integrity": "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -5523,26 +5702,47 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-fetch-native": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.6.tgz", - "integrity": "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", "dev": true, "license": "MIT" }, "node_modules/nypm": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.5.4.tgz", - "integrity": "sha512-X0SNNrZiGU8/e/zAB7sCTtdxWTMSIO73q+xuKgglm2Yvzwlo8UoC5FNySQFCvl84uPaeADkqHUZUkWy4aH4xOA==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.2.tgz", + "integrity": "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==", "dev": true, "license": "MIT", "dependencies": { "citty": "^0.1.6", - "consola": "^3.4.0", + "consola": "^3.4.2", "pathe": "^2.0.3", - "pkg-types": "^1.3.1", - "tinyexec": "^0.3.2", - "ufo": "^1.5.4" + "pkg-types": "^2.3.0", + "tinyexec": "^1.0.1" }, "bin": { "nypm": "dist/cli.mjs" @@ -5551,13 +5751,6 @@ "node": "^14.16.0 || >=16.10.0" } }, - "node_modules/nypm/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, "node_modules/object-inspect": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", @@ -5647,9 +5840,9 @@ } }, "node_modules/ohash": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.6.tgz", - "integrity": "sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", "dev": true, "license": "MIT" }, @@ -5662,6 +5855,25 @@ "wrappy": "1" } }, + "node_modules/open": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.2.tgz", + "integrity": "sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -5787,16 +5999,16 @@ } }, "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "dev": true, "license": "MIT" }, "node_modules/perfect-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", - "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.0.0.tgz", + "integrity": "sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==", "dev": true, "license": "MIT" }, @@ -5820,24 +6032,17 @@ } }, "node_modules/pkg-types": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", - "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", "dev": true, "license": "MIT", "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.4", - "pathe": "^2.0.1" + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" } }, - "node_modules/pkg-types/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", @@ -5886,9 +6091,9 @@ } }, "node_modules/prosemirror-changeset": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.3.0.tgz", - "integrity": "sha512-8wRKhlEwEJ4I13Ju54q2NZR1pVKGTgJ/8XsQ8L5A5uUsQ/YQScQJuEAuh8Bn8i6IwAMjjLRABd9lVli+DlIiVw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.3.1.tgz", + "integrity": "sha512-j0kORIBm8ayJNl3zQvD1TTPHJX3g042et6y/KQhZhnPrruO8exkTgG8X+NRpj7kIyMMEx74Xb3DyMIBtO0IKkQ==", "dev": true, "license": "MIT", "peer": true, @@ -5934,9 +6139,9 @@ } }, "node_modules/prosemirror-gapcursor": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz", - "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.4.0.tgz", + "integrity": "sha512-z00qvurSdCEWUIulij/isHaqu4uLS8r/Fi61IbjdIPJEonQgggbJsLnstW7Lgdk4zQ68/yr6B6bf7sJXowIgdQ==", "dev": true, "license": "MIT", "peer": true, @@ -5948,9 +6153,9 @@ } }, "node_modules/prosemirror-history": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.1.tgz", - "integrity": "sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.5.0.tgz", + "integrity": "sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==", "dev": true, "license": "MIT", "peer": true, @@ -5962,9 +6167,9 @@ } }, "node_modules/prosemirror-inputrules": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.5.0.tgz", - "integrity": "sha512-K0xJRCmt+uSw7xesnHmcn72yBGTbY45vm8gXI4LZXbx2Z0jwh5aF9xrGQgrVPu0WbyFVFF3E/o9VhJYz6SQWnA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.5.1.tgz", + "integrity": "sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==", "dev": true, "license": "MIT", "peer": true, @@ -6013,9 +6218,9 @@ } }, "node_modules/prosemirror-model": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.1.tgz", - "integrity": "sha512-AUvbm7qqmpZa5d9fPKMvH1Q5bqYQvAZWOGRvxsB6iFLyycvC9MwNemNVjHVrWgjaoxAfY8XVg7DbvQ/qxvI9Eg==", + "version": "1.25.4", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.4.tgz", + "integrity": "sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==", "dev": true, "license": "MIT", "peer": true, @@ -6048,9 +6253,9 @@ } }, "node_modules/prosemirror-state": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", - "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.4.tgz", + "integrity": "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==", "dev": true, "license": "MIT", "peer": true, @@ -6061,9 +6266,9 @@ } }, "node_modules/prosemirror-tables": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.7.1.tgz", - "integrity": "sha512-eRQ97Bf+i9Eby99QbyAiyov43iOKgWa7QCGly+lrDt7efZ1v8NWolhXiB43hSDGIXT1UXgbs4KJN3a06FGpr1Q==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.8.1.tgz", + "integrity": "sha512-DAgDoUYHCcc6tOGpLVPSU1k84kCUWTWnfWX3UDy2Delv4ryH0KqTD6RBI6k4yi9j9I8gl3j8MkPpRD/vWPZbug==", "dev": true, "license": "MIT", "peer": true, @@ -6093,9 +6298,9 @@ } }, "node_modules/prosemirror-transform": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.10.4.tgz", - "integrity": "sha512-pwDy22nAnGqNR1feOQKHxoFkkUtepoFAd3r2hbEDsnf4wp57kKA36hXsB3njA9FtONBEwSDnDeCiJe+ItD+ykw==", + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.10.5.tgz", + "integrity": "sha512-RPDQCxIDhIBb1o36xxwsaeAvivO8VLJcgBtzmOwQ64bMtsVFh5SSuJ6dWSxO1UsHTiTXPCgQm3PDJt7p6IOLbw==", "dev": true, "license": "MIT", "peer": true, @@ -6104,9 +6309,9 @@ } }, "node_modules/prosemirror-view": { - "version": "1.39.3", - "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.39.3.tgz", - "integrity": "sha512-bY/7kg0LzRE7ytR0zRdSMWX3sknEjw68l836ffLPMh0OG3OYnNuBDUSF3v0vjvnzgYjgY9ZH/RypbARURlcMFA==", + "version": "1.41.3", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.41.3.tgz", + "integrity": "sha512-SqMiYMUQNNBP9kfPhLO8WXEk/fon47vc52FQsUiJzTBuyjKgEcoAwMyF04eQ4WZ2ArMn7+ReypYL60aKngbACQ==", "dev": true, "license": "MIT", "peer": true, @@ -6116,6 +6321,20 @@ "prosemirror-transform": "^1.1.0" } }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -6136,6 +6355,14 @@ "node": ">=6" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -6208,6 +6435,14 @@ "node": ">=0.10.5" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -6317,6 +6552,19 @@ "license": "MIT", "peer": true }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -6387,10 +6635,11 @@ } }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -6398,6 +6647,14 @@ "node": ">=10" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -6612,24 +6869,6 @@ "node": ">=6" } }, - "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "dev": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -6637,11 +6876,14 @@ "dev": true }, "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/tinyglobby": { "version": "0.2.14", @@ -6700,6 +6942,31 @@ "node": ">=8.0" } }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/ts-api-utils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", @@ -6871,13 +7138,6 @@ "license": "MIT", "peer": true }, - "node_modules/ufo": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", - "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", - "dev": true, - "license": "MIT" - }, "node_modules/uglify-js": { "version": "3.18.0", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.18.0.tgz", @@ -6912,6 +7172,17 @@ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -6921,10 +7192,22 @@ "punycode": "^2.1.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz", + "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==", "dev": true, "funding": [ "https://github.com/sponsors/broofa", @@ -6933,13 +7216,13 @@ "license": "MIT", "peer": true, "bin": { - "uuid": "dist/esm/bin/uuid" + "uuid": "dist-node/bin/uuid" } }, "node_modules/vite": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", - "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "dev": true, "license": "MIT", "dependencies": { @@ -7067,6 +7350,26 @@ "license": "MIT", "peer": true }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -7138,12 +7441,28 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, - "license": "ISC" + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } }, "node_modules/yocto-queue": { "version": "0.1.0", diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/package.json b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/package.json index 68eee77f..6d89d11a 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/package.json +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/package.json @@ -17,12 +17,15 @@ "lint:fix": "npm run lint -- --fix", "lint": "eslint src" }, + "peerDependencies": { + "@umbraco-cms/backoffice": "17.0.0" + }, "devDependencies": { - "@hey-api/client-fetch": "^0.10.0", - "@hey-api/openapi-ts": "0.67.6", + "@hey-api/client-fetch": "^0.13.0", + "@hey-api/openapi-ts": "0.85.0", "@typescript-eslint/eslint-plugin": "^7.13.0", "@typescript-eslint/parser": "^7.13.0", - "@umbraco-cms/backoffice": "^16.0.0", + "@umbraco-cms/backoffice": "17.0.0", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-typescript": "^3.6.1", diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/public/umbraco-package.json b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/public/umbraco-package.json index d00668bc..c732ed50 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/public/umbraco-package.json +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/public/umbraco-package.json @@ -1,7 +1,7 @@ { "id": "Umbraco.Cms.Integrations.Crm.HubSpot", "name": "Umbraco CMS Integrations: CRM - HubSpot", - "version": "7.0.0", + "version": "8.0.0", "extensions": [ { "name": "Umbraco EntryPoint", diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/context/hubspot-forms.context.ts b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/context/hubspot-forms.context.ts index c0cac769..1936b431 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/context/hubspot-forms.context.ts +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/context/hubspot-forms.context.ts @@ -3,13 +3,13 @@ import { UmbContextToken } from "@umbraco-cms/backoffice/context-api"; import type { UmbControllerHost } from "@umbraco-cms/backoffice/controller-api"; import { HubspotFormsRepository } from "../repository/hubspot-forms.repository.js"; -import { HubspotFormPickerSettingsModelReadable, type OAuthRequestDtoModel } from "../../generated/types.gen.js"; +import { HubspotFormPickerSettingsModel, type OAuthRequestDtoModel } from "../../generated/types.gen.js"; import { UmbObjectState } from "@umbraco-cms/backoffice/observable-api"; export class HubspotFormsContext extends UmbControllerBase { #repository: HubspotFormsRepository; - #settingsModel = new UmbObjectState(undefined); + #settingsModel = new UmbObjectState(undefined); settingsModel = this.#settingsModel.asObservable(); constructor(host: UmbControllerHost) { diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/modal/hubspot-forms-modal.element.ts b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/modal/hubspot-forms-modal.element.ts index 376a1b6c..fe2e6873 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/modal/hubspot-forms-modal.element.ts +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/modal/hubspot-forms-modal.element.ts @@ -6,7 +6,7 @@ import { import type { UUIInputEvent } from "@umbraco-cms/backoffice/external/uui"; import type { HubspotServiceStatus } from "../models/hubspot-service.model.js"; import type { HubspotFormPickerModalData, HubspotFormPickerModalValue } from "./hubspot.modal-token.js"; -import type { HubspotFormDtoModel, HubspotFormPickerSettingsModelReadable } from "@umbraco-integrations/hubspot-forms/generated"; +import type { HubspotFormDtoModel, HubspotFormPickerSettingsModel } from "@umbraco-integrations/hubspot-forms/generated"; import { HUBSPOT_FORMS_CONTEXT_TOKEN } from "@umbraco-integrations/hubspot-forms/context"; const elementName = "hubspot-forms-modal"; @@ -16,7 +16,7 @@ export default class HubspotFormsModalElement extends UmbModalBaseElement { #hubspotFormsContext!: typeof HUBSPOT_FORMS_CONTEXT_TOKEN.TYPE; - #settingsModel?: HubspotFormPickerSettingsModelReadable; + #settingsModel?: HubspotFormPickerSettingsModel; @state() private _serviceStatus: HubspotServiceStatus = { diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/property-editor/authorization-property-editor.element.ts b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/property-editor/authorization-property-editor.element.ts index ebf12da7..172aee60 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/property-editor/authorization-property-editor.element.ts +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/property-editor/authorization-property-editor.element.ts @@ -19,7 +19,7 @@ import { type HubspotServiceStatus } from "../models/hubspot-service.model.js"; import { HUBSPOT_FORMS_CONTEXT_TOKEN } from "@umbraco-integrations/hubspot-forms/context"; -import type { HubspotFormPickerSettingsModelReadable, OAuthRequestDtoModel } from "@umbraco-integrations/hubspot-forms/generated"; +import type { HubspotFormPickerSettingsModel, OAuthRequestDtoModel } from "@umbraco-integrations/hubspot-forms/generated"; const elementName = "hubspot-authorization"; @@ -27,7 +27,7 @@ const elementName = "hubspot-authorization"; export class HubspotAuthorizationElement extends UmbElementMixin(LitElement) { #hubspotFormsContext!: typeof HUBSPOT_FORMS_CONTEXT_TOKEN.TYPE; - #settingsModel?: HubspotFormPickerSettingsModelReadable; + #settingsModel?: HubspotFormPickerSettingsModel; @state() private _serviceStatus: HubspotServiceStatus = { diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/property-editor/form-picker-property-editor.element.ts b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/property-editor/form-picker-property-editor.element.ts index d90a33a8..c4782a17 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/property-editor/form-picker-property-editor.element.ts +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/property-editor/form-picker-property-editor.element.ts @@ -7,7 +7,7 @@ import { import { HUBSPOT_FORMS_MODAL_TOKEN } from "../modal/hubspot.modal-token.js"; import { ConfigDescription, type HubspotServiceStatus } from "../models/hubspot-service.model.js"; import { HUBSPOT_FORMS_CONTEXT_TOKEN } from "@umbraco-integrations/hubspot-forms/context"; -import type { HubspotFormDtoModel, HubspotFormPickerSettingsModelReadable } from "@umbraco-integrations/hubspot-forms/generated"; +import type { HubspotFormDtoModel, HubspotFormPickerSettingsModel } from "@umbraco-integrations/hubspot-forms/generated"; const elementName = "hubspot-form-picker"; @@ -15,7 +15,7 @@ const elementName = "hubspot-form-picker"; export class HubspotFormPickerElement extends UmbElementMixin(LitElement) { #modalManagerContext?: typeof UMB_MODAL_MANAGER_CONTEXT.TYPE; - #settingsModel?: HubspotFormPickerSettingsModelReadable; + #settingsModel?: HubspotFormPickerSettingsModel; @property({ type: String }) public value = ""; diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/repository/hubspot-forms.repository.ts b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/repository/hubspot-forms.repository.ts index f8644f0e..100e6573 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/repository/hubspot-forms.repository.ts +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Client/src/repository/hubspot-forms.repository.ts @@ -1,7 +1,7 @@ import { UmbControllerBase } from "@umbraco-cms/backoffice/class-api"; import type { UmbControllerHost } from "@umbraco-cms/backoffice/controller-api"; import { tryExecute } from "@umbraco-cms/backoffice/resources"; -import { FormsService, type OAuthRequestDtoModel } from "@umbraco-integrations/hubspot-forms/generated"; +import { Forms, type OAuthRequestDtoModel } from "@umbraco-integrations/hubspot-forms/generated"; export class HubspotFormsRepository extends UmbControllerBase { constructor(host: UmbControllerHost) { @@ -9,7 +9,7 @@ export class HubspotFormsRepository extends UmbControllerBase { } async getAuthorizationUrl() { - const { data, error } = await tryExecute(this, FormsService.getAuthorizationUrl()); + const { data, error } = await tryExecute(this, Forms.getAuthorizationUrl()); if (error || !data) { return { error }; @@ -19,7 +19,7 @@ export class HubspotFormsRepository extends UmbControllerBase { } async checkApiConfiguration() { - const { data, error } = await tryExecute(this, FormsService.getCheckConfiguration()); + const { data, error } = await tryExecute(this, Forms.getCheckConfiguration()); if (error || !data) { return { error }; @@ -29,7 +29,7 @@ export class HubspotFormsRepository extends UmbControllerBase { } async getAccessToken(oauthRequestDto: OAuthRequestDtoModel) { - const { data, error } = await tryExecute(this, FormsService.postGetAccessToken({ + const { data, error } = await tryExecute(this, Forms.postGetAccessToken({ body: oauthRequestDto })); @@ -41,7 +41,7 @@ export class HubspotFormsRepository extends UmbControllerBase { } async validateAccessToken() { - const { data, error } = await tryExecute(this, FormsService.getValidateAccessToken()); + const { data, error } = await tryExecute(this, Forms.getValidateAccessToken()); if (error || !data) { return { error }; @@ -51,7 +51,7 @@ export class HubspotFormsRepository extends UmbControllerBase { } async refreshAccessToken() { - const { data, error } = await tryExecute(this, FormsService.postRefreshAccessToken()); + const { data, error } = await tryExecute(this, Forms.postRefreshAccessToken()); if (error || !data) { return { error }; @@ -61,7 +61,7 @@ export class HubspotFormsRepository extends UmbControllerBase { } async revokeAccessToken() { - const { data, error } = await tryExecute(this, FormsService.postRevokeAccessToken()); + const { data, error } = await tryExecute(this, Forms.postRevokeAccessToken()); if (error || !data) { return { error }; @@ -71,7 +71,7 @@ export class HubspotFormsRepository extends UmbControllerBase { } async getFormsByApiKey() { - const { data, error } = await tryExecute(this, FormsService.getFormsByApiKey()); + const { data, error } = await tryExecute(this, Forms.getFormsByApiKey()); if (error || !data) { return { error }; @@ -81,7 +81,7 @@ export class HubspotFormsRepository extends UmbControllerBase { } async getFormsOAuth() { - const { data, error } = await tryExecute(this, FormsService.getFormsOAuth()); + const { data, error } = await tryExecute(this, Forms.getFormsOAuth()); if (error || !data) { return { error }; diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/HubspotComposer.cs b/src/Umbraco.Cms.Integrations.Crm.Hubspot/HubspotComposer.cs index cf7b53c0..1965f813 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/HubspotComposer.cs +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/HubspotComposer.cs @@ -1,5 +1,5 @@ using Microsoft.Extensions.DependencyInjection; -using Microsoft.OpenApi.Models; +using Microsoft.OpenApi; using Swashbuckle.AspNetCore.SwaggerGen; using Umbraco.Cms.Api.Common.OpenApi; using Umbraco.Cms.Core.Composing; @@ -12,8 +12,6 @@ namespace Umbraco.Cms.Integrations.Crm.Hubspot { public class HubspotComposer : IComposer { - public delegate IHubspotAuthorizationService AuthorizationImplementationFactory(bool useUmbracoAuthorization); - public void Compose(IUmbracoBuilder builder) { var options = builder.Services.AddOptions() @@ -25,14 +23,7 @@ public void Compose(IUmbracoBuilder builder) builder.Services.AddSingleton(); builder.Services.AddSingleton(); - builder.Services.AddSingleton(f => useUmbracoAuthorization => - { - return useUmbracoAuthorization switch - { - true => f.GetService(), - _ => f.GetService() - }; - }); + builder.Services.AddSingleton(); builder.Services.Configure(options => { diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Services/HubspotAuthorizationServiceFactory.cs b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Services/HubspotAuthorizationServiceFactory.cs new file mode 100644 index 00000000..583ff5b6 --- /dev/null +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Services/HubspotAuthorizationServiceFactory.cs @@ -0,0 +1,16 @@ +using Microsoft.Extensions.DependencyInjection; + +namespace Umbraco.Cms.Integrations.Crm.Hubspot.Services; + +public class HubspotAuthorizationServiceFactory : IHubspotAuthorizationServiceFactory +{ + private readonly IServiceProvider _serviceProvider; + + public HubspotAuthorizationServiceFactory(IServiceProvider serviceProvider) => _serviceProvider = serviceProvider; + + public IHubspotAuthorizationService GetAuthorizationService(bool useUmbracoAuthorization) => + useUmbracoAuthorization + ? _serviceProvider.GetRequiredService() + : _serviceProvider.GetRequiredService(); + +} diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Services/IHubspotAuthorizationServiceFactory.cs b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Services/IHubspotAuthorizationServiceFactory.cs new file mode 100644 index 00000000..57e9a770 --- /dev/null +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Services/IHubspotAuthorizationServiceFactory.cs @@ -0,0 +1,6 @@ +namespace Umbraco.Cms.Integrations.Crm.Hubspot.Services; + +public interface IHubspotAuthorizationServiceFactory +{ + IHubspotAuthorizationService GetAuthorizationService(bool useUmbracoAuthorization); +} diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Umbraco.Cms.Integrations.Crm.Hubspot.csproj b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Umbraco.Cms.Integrations.Crm.Hubspot.csproj index 04ef5373..0bddb1ea 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/Umbraco.Cms.Integrations.Crm.Hubspot.csproj +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/Umbraco.Cms.Integrations.Crm.Hubspot.csproj @@ -1,6 +1,6 @@  - net9.0 + net10.0 enable enable true @@ -14,9 +14,9 @@ Umbraco CMS Integrations: CRM - Hubspot An extension for Umbraco CMS providing a form picker and rendering component for Hubspot. - https://github.com/umbraco/Umbraco.Cms.Integrations/blob/main-v16/src/Umbraco.Cms.Integrations.Crm.Hubspot + https://github.com/umbraco/Umbraco.Cms.Integrations/blob/main-v17/src/Umbraco.Cms.Integrations.Crm.Hubspot https://github.com/umbraco/Umbraco.Cms.Integrations - 7.0.1 + 8.0.0 Umbraco HQ Umbraco Umbraco;Umbraco-Marketplace @@ -25,7 +25,7 @@ - [16.0.0, 17) + [17.0.0, 18) @@ -51,6 +51,10 @@ + + + + @@ -62,6 +66,6 @@ true - + diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/form-picker-property-editor.element-zQFjcuHH.js b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/form-picker-property-editor.element-zQFjcuHH.js new file mode 100644 index 00000000..79592db1 --- /dev/null +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/form-picker-property-editor.element-zQFjcuHH.js @@ -0,0 +1,128 @@ +import { UmbElementMixin as y } from "@umbraco-cms/backoffice/element-api"; +import { LitElement as E, html as h, css as b, property as M, state as v, customElement as S } from "@umbraco-cms/backoffice/external/lit"; +import { UmbModalToken as C, UMB_MODAL_MANAGER_CONTEXT as w } from "@umbraco-cms/backoffice/modal"; +import { UMB_NOTIFICATION_CONTEXT as T } from "@umbraco-cms/backoffice/notification"; +import { H as N, C as k } from "./index-BT2389WJ.js"; +const A = new C("HubspotForms.Modal", { + modal: { + type: "sidebar", + size: "small" + } +}); +var F = Object.defineProperty, P = Object.getOwnPropertyDescriptor, O = (e) => { + throw TypeError(e); +}, u = (e, t, s, n) => { + for (var r = n > 1 ? void 0 : n ? P(t, s) : t, d = e.length - 1, p; d >= 0; d--) + (p = e[d]) && (r = (n ? p(t, s, r) : p(r)) || r); + return n && r && F(t, s, r), r; +}, f = (e, t, s) => t.has(e) || O("Cannot " + s), o = (e, t, s) => (f(e, t, "read from private field"), t.get(e)), c = (e, t, s) => t.has(e) ? O("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, s), _ = (e, t, s, n) => (f(e, t, "write to private field"), t.set(e, s), s), H = (e, t, s) => (f(e, t, "access private method"), s), l, i, m, g; +const I = "hubspot-form-picker"; +let a = class extends y(E) { + constructor() { + super(), c(this, m), c(this, l), c(this, i), this.value = "", this._form = { + name: "", + id: "", + fields: "", + portalId: "", + region: "" + }, this._serviceStatus = { + isValid: !1, + type: "", + description: "", + useOAuth: !1 + }, this.consumeContext(w, (e) => { + _(this, l, e); + }), this.consumeContext(N, (e) => { + e && this.observe(e.settingsModel, (t) => { + _(this, i, t); + }); + }); + } + async connectedCallback() { + if (super.connectedCallback(), this.value == null || this.value.length == 0 || !o(this, i)) return; + this._serviceStatus = { + isValid: o(this, i).isValid, + type: o(this, i).type.value, + description: "", + useOAuth: o(this, i).isValid && o(this, i).type.value === "OAuth" + }, this._serviceStatus.isValid || this._showError(k.none); + const e = JSON.parse(JSON.stringify(this.value)); + this._form = { + id: e.id, + name: e.name, + fields: e.fields, + portalId: e.portalId, + region: e.region + }; + } + async _openModal() { + var s; + const e = (s = o(this, l)) == null ? void 0 : s.open(this, A, { + data: { + headline: "HubSpot Forms" + } + }), t = await (e == null ? void 0 : e.onSubmit()); + t && (this._form = { + id: t.form.id, + name: t.form.name, + fields: t.form.fields, + portalId: t.form.portalId, + region: t.form.region + }, this.value = JSON.stringify(t.form), this.dispatchEvent(new CustomEvent("property-value-change"))); + } + async _showError(e) { + const t = await this.getContext(T); + t == null || t.peek("danger", { + data: { message: e } + }); + } + render() { + var e, t; + return h` + ${this.value == null || this.value.length == 0 ? h` + + ` : h` + + + Remove + + + `} + `; + } +}; +l = /* @__PURE__ */ new WeakMap(); +i = /* @__PURE__ */ new WeakMap(); +m = /* @__PURE__ */ new WeakSet(); +g = function() { + this.value = "", this.dispatchEvent(new CustomEvent("property-value-change")); +}; +a.styles = [ + b` + .add-button { + width: 100%; + } + ` +]; +u([ + M({ type: String }) +], a.prototype, "value", 2); +u([ + v() +], a.prototype, "_form", 2); +u([ + v() +], a.prototype, "_serviceStatus", 2); +a = u([ + S(I) +], a); +const x = a; +export { + a as HubspotFormPickerElement, + x as default +}; +//# sourceMappingURL=form-picker-property-editor.element-zQFjcuHH.js.map diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/form-picker-property-editor.element-zQFjcuHH.js.map b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/form-picker-property-editor.element-zQFjcuHH.js.map new file mode 100644 index 00000000..90947bad --- /dev/null +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/form-picker-property-editor.element-zQFjcuHH.js.map @@ -0,0 +1 @@ +{"version":3,"file":"form-picker-property-editor.element-zQFjcuHH.js","sources":["../Client/src/modal/hubspot.modal-token.ts","../Client/src/property-editor/form-picker-property-editor.element.ts"],"sourcesContent":["import { UmbModalToken } from \"@umbraco-cms/backoffice/modal\";\r\nimport type { HubspotFormDtoModel } from \"@umbraco-integrations/hubspot-forms/generated\";\r\n\r\nexport type HubspotFormPickerModalData = {\r\n headline: string;\r\n}\r\n\r\nexport type HubspotFormPickerModalValue = {\r\n form: HubspotFormDtoModel;\r\n}\r\n\r\nexport const HUBSPOT_FORMS_MODAL_TOKEN = new UmbModalToken(\"HubspotForms.Modal\", {\r\n modal: {\r\n type: \"sidebar\",\r\n size: \"small\"\r\n }\r\n});","import { UmbElementMixin } from '@umbraco-cms/backoffice/element-api';\r\nimport { LitElement, customElement, html, css, property, state } from \"@umbraco-cms/backoffice/external/lit\";\r\nimport { UMB_MODAL_MANAGER_CONTEXT } from \"@umbraco-cms/backoffice/modal\";\r\nimport {\r\n UMB_NOTIFICATION_CONTEXT,\r\n} from \"@umbraco-cms/backoffice/notification\";\r\nimport { HUBSPOT_FORMS_MODAL_TOKEN } from \"../modal/hubspot.modal-token.js\";\r\nimport { ConfigDescription, type HubspotServiceStatus } from \"../models/hubspot-service.model.js\";\r\nimport { HUBSPOT_FORMS_CONTEXT_TOKEN } from \"@umbraco-integrations/hubspot-forms/context\";\r\nimport type { HubspotFormDtoModel, HubspotFormPickerSettingsModel } from \"@umbraco-integrations/hubspot-forms/generated\";\r\n\r\nconst elementName = \"hubspot-form-picker\";\r\n\r\n@customElement(elementName)\r\nexport class HubspotFormPickerElement extends UmbElementMixin(LitElement) {\r\n\r\n #modalManagerContext?: typeof UMB_MODAL_MANAGER_CONTEXT.TYPE;\r\n #settingsModel?: HubspotFormPickerSettingsModel;\r\n\r\n @property({ type: String })\r\n public value = \"\";\r\n\r\n @state()\r\n private _form: HubspotFormDtoModel = {\r\n name: \"\",\r\n id: \"\",\r\n fields: \"\",\r\n portalId: \"\",\r\n region: \"\"\r\n };\r\n\r\n @state()\r\n private _serviceStatus: HubspotServiceStatus = {\r\n isValid: false,\r\n type: \"\",\r\n description: \"\",\r\n useOAuth: false\r\n };\r\n\r\n constructor() {\r\n super();\r\n this.consumeContext(UMB_MODAL_MANAGER_CONTEXT, (instance) => {\r\n this.#modalManagerContext = instance;\r\n });\r\n this.consumeContext(HUBSPOT_FORMS_CONTEXT_TOKEN, (context) => {\r\n if (!context) return;\r\n this.observe(context.settingsModel, (settingsModel) => {\r\n this.#settingsModel = settingsModel;\r\n });\r\n });\r\n }\r\n\r\n async connectedCallback() {\r\n super.connectedCallback();\r\n\r\n if (this.value == null || this.value.length == 0) return;\r\n\r\n if (!this.#settingsModel) return;\r\n\r\n this._serviceStatus = {\r\n isValid: this.#settingsModel.isValid,\r\n type: this.#settingsModel.type!.value!,\r\n description: \"\",\r\n useOAuth: this.#settingsModel.isValid && this.#settingsModel.type!.value === \"OAuth\"\r\n }\r\n\r\n if (!this._serviceStatus.isValid) {\r\n this._showError(ConfigDescription.none);\r\n }\r\n\r\n const dto: HubspotFormDtoModel = JSON.parse(JSON.stringify(this.value));\r\n this._form = {\r\n id: dto.id,\r\n name: dto.name,\r\n fields: dto.fields,\r\n portalId: dto.portalId,\r\n region: dto.region\r\n };\r\n }\r\n\r\n #deleteForm() {\r\n this.value = \"\";\r\n this.dispatchEvent(new CustomEvent('property-value-change'));\r\n }\r\n\r\n private async _openModal() {\r\n const pickerContext = this.#modalManagerContext?.open(this, HUBSPOT_FORMS_MODAL_TOKEN, {\r\n data: {\r\n headline: \"HubSpot Forms\",\r\n },\r\n });\r\n\r\n const data = await pickerContext?.onSubmit();\r\n if (!data) return;\r\n\r\n this._form = {\r\n id: data.form.id,\r\n name: data.form.name,\r\n fields: data.form.fields,\r\n portalId: data.form.portalId,\r\n region: data.form.region\r\n };\r\n\r\n this.value = JSON.stringify(data.form);\r\n this.dispatchEvent(new CustomEvent('property-value-change'));\r\n }\r\n\r\n private async _showError(message: string) {\r\n const notificationContext = await this.getContext(UMB_NOTIFICATION_CONTEXT);\r\n notificationContext?.peek(\"danger\", {\r\n data: { message: message },\r\n });\r\n }\r\n\r\n render() {\r\n return html`\r\n ${this.value == null || this.value.length == 0\r\n ? html`\r\n \r\n `\r\n : html`\r\n \r\n \r\n Remove\r\n \r\n \r\n `}\r\n\t\t`;\r\n }\r\n\r\n static styles = [\r\n css`\r\n .add-button {\r\n width: 100%;\r\n }\r\n `];\r\n}\r\n\r\nexport default HubspotFormPickerElement;\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n [elementName]: HubspotFormPickerElement;\r\n }\r\n}"],"names":["HUBSPOT_FORMS_MODAL_TOKEN","UmbModalToken","_modalManagerContext","_settingsModel","_HubspotFormPickerElement_instances","deleteForm_fn","elementName","HubspotFormPickerElement","UmbElementMixin","LitElement","__privateAdd","UMB_MODAL_MANAGER_CONTEXT","instance","__privateSet","HUBSPOT_FORMS_CONTEXT_TOKEN","context","settingsModel","__privateGet","ConfigDescription","dto","pickerContext","_a","data","message","notificationContext","UMB_NOTIFICATION_CONTEXT","html","_b","__privateMethod","css","__decorateClass","property","state","customElement","HubspotFormPickerElement$1"],"mappings":"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"} \ No newline at end of file diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/hubspot-forms-modal.element-BPxig6w4.js b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/hubspot-forms-modal.element-BPxig6w4.js new file mode 100644 index 00000000..8bb0299a --- /dev/null +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/hubspot-forms-modal.element-BPxig6w4.js @@ -0,0 +1,139 @@ +import { html as d, css as S, state as _, customElement as E } from "@umbraco-cms/backoffice/external/lit"; +import { UmbModalBaseElement as M } from "@umbraco-cms/backoffice/modal"; +import { UMB_NOTIFICATION_CONTEXT as T } from "@umbraco-cms/backoffice/notification"; +import { H as $ } from "./index-BT2389WJ.js"; +var A = Object.defineProperty, x = Object.getOwnPropertyDescriptor, F = (t) => { + throw TypeError(t); +}, c = (t, e, i, n) => { + for (var s = n > 1 ? void 0 : n ? x(e, i) : e, p = t.length - 1, f; p >= 0; p--) + (f = t[p]) && (s = (n ? f(e, i, s) : f(s)) || s); + return n && s && A(e, i, s), s; +}, v = (t, e, i) => e.has(t) || F("Cannot " + i), o = (t, e, i) => (v(t, e, "read from private field"), e.get(t)), m = (t, e, i) => e.has(t) ? F("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, i), g = (t, e, i, n) => (v(t, e, "write to private field"), e.set(t, i), i), l = (t, e, i) => (v(t, e, "access private method"), i), h, a, r, y, b, w, O, C; +const k = "hubspot-forms-modal"; +let u = class extends M { + constructor() { + super(), m(this, r), m(this, h), m(this, a), this._serviceStatus = { + isValid: !1, + type: "", + description: "", + useOAuth: !1 + }, this._loading = !1, this._forms = [], this._filteredForms = this._forms, this.consumeContext($, (t) => { + t && (g(this, h, t), this.observe(t.settingsModel, (e) => { + g(this, a, e); + })); + }); + } + async connectedCallback() { + super.connectedCallback(), l(this, r, y).call(this); + } + _renderFilter() { + return d` + + `; + } + _onSelect(t) { + this.value = { form: t }, this._submitModal(); + } + async _showError(t) { + const e = await this.getContext(T); + e == null || e.peek("danger", { + data: { message: t } + }); + } + render() { + return d` + + + ${this._loading ? d`
` : ""} + ${this._renderFilter()} + ${this._filteredForms.map((t) => d` + this._onSelect(t)}> + + `)} +
+ + + + + + +
+ `; + } +}; +h = /* @__PURE__ */ new WeakMap(); +a = /* @__PURE__ */ new WeakMap(); +r = /* @__PURE__ */ new WeakSet(); +y = async function() { + !o(this, h) || !o(this, a) || (this._serviceStatus = { + isValid: o(this, a).isValid, + type: o(this, a).type.value, + description: "", + useOAuth: o(this, a).isValid && o(this, a).type.value === "OAuth" + }, await l(this, r, b).call(this)); +}; +b = async function() { + this._loading = !0; + const { data: t } = this._serviceStatus.useOAuth ? await o(this, h).getFormsOAuth() : await o(this, h).getFormsByApiKey(); + t && (this._forms = t.forms ?? [], this._filteredForms = t.forms ?? [], this._loading = !1, (!t.isValid || t.isExpired) && this._showError(t.error)); +}; +w = function(t) { + let e = t.target.value || ""; + e = e.toLowerCase(); + const i = e ? this._forms.filter((n) => { + var s; + return (s = n.name) == null ? void 0 : s.includes(e); + }) : this._forms; + this._filteredForms = i; +}; +O = async function() { + await l(this, r, b).call(this); +}; +C = async function() { + this._filteredForms = [], await l(this, r, y).call(this); +}; +u.styles = [ + S` + uui-box { + margin-bottom: var(--uui-size-8); + } + + #filter { + width: 100%; + margin-bottom: var(--uui-size-3); + } + + uui-icon { + margin: auto; + margin-left: var(--uui-size-2); + } + ` +]; +c([ + _() +], u.prototype, "_serviceStatus", 2); +c([ + _() +], u.prototype, "_loading", 2); +c([ + _() +], u.prototype, "_forms", 2); +c([ + _() +], u.prototype, "_filteredForms", 2); +u = c([ + E(k) +], u); +export { + u as default +}; +//# sourceMappingURL=hubspot-forms-modal.element-BPxig6w4.js.map diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/hubspot-forms-modal.element-BPxig6w4.js.map b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/hubspot-forms-modal.element-BPxig6w4.js.map new file mode 100644 index 00000000..64c003d5 --- /dev/null +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/hubspot-forms-modal.element-BPxig6w4.js.map @@ -0,0 +1 @@ +{"version":3,"file":"hubspot-forms-modal.element-BPxig6w4.js","sources":["../Client/src/modal/hubspot-forms-modal.element.ts"],"sourcesContent":["import { html, css, state, customElement } from \"@umbraco-cms/backoffice/external/lit\";\r\nimport { UmbModalBaseElement } from \"@umbraco-cms/backoffice/modal\";\r\nimport {\r\n UMB_NOTIFICATION_CONTEXT,\r\n} from \"@umbraco-cms/backoffice/notification\";\r\nimport type { UUIInputEvent } from \"@umbraco-cms/backoffice/external/uui\";\r\nimport type { HubspotServiceStatus } from \"../models/hubspot-service.model.js\";\r\nimport type { HubspotFormPickerModalData, HubspotFormPickerModalValue } from \"./hubspot.modal-token.js\";\r\nimport type { HubspotFormDtoModel, HubspotFormPickerSettingsModel } from \"@umbraco-integrations/hubspot-forms/generated\";\r\nimport { HUBSPOT_FORMS_CONTEXT_TOKEN } from \"@umbraco-integrations/hubspot-forms/context\";\r\n\r\nconst elementName = \"hubspot-forms-modal\";\r\n\r\n@customElement(elementName)\r\nexport default class HubspotFormsModalElement\r\n extends UmbModalBaseElement {\r\n\r\n #hubspotFormsContext!: typeof HUBSPOT_FORMS_CONTEXT_TOKEN.TYPE;\r\n #settingsModel?: HubspotFormPickerSettingsModel;\r\n\r\n @state()\r\n private _serviceStatus: HubspotServiceStatus = {\r\n isValid: false,\r\n type: \"\",\r\n description: \"\",\r\n useOAuth: false\r\n };\r\n\r\n @state()\r\n private _loading = false;\r\n\r\n @state()\r\n private _forms: Array = [];\r\n\r\n @state()\r\n private _filteredForms: Array = this._forms;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.consumeContext(HUBSPOT_FORMS_CONTEXT_TOKEN, (context) => {\r\n if (!context) return;\r\n this.#hubspotFormsContext = context;\r\n this.observe(context.settingsModel, (settingsModel) => {\r\n this.#settingsModel = settingsModel;\r\n });\r\n });\r\n }\r\n\r\n async connectedCallback() {\r\n super.connectedCallback();\r\n this.#checkApiConfiguration();\r\n }\r\n\r\n async #checkApiConfiguration() {\r\n if (!this.#hubspotFormsContext || !this.#settingsModel) return;\r\n\r\n this._serviceStatus = {\r\n isValid: this.#settingsModel.isValid,\r\n type: this.#settingsModel.type!.value!,\r\n description: \"\",\r\n useOAuth: this.#settingsModel.isValid && this.#settingsModel.type!.value === \"OAuth\"\r\n }\r\n\r\n await this.#loadForms();\r\n }\r\n\r\n async #loadForms() {\r\n this._loading = true;\r\n const { data } = this._serviceStatus.useOAuth\r\n ? await this.#hubspotFormsContext.getFormsOAuth()\r\n : await this.#hubspotFormsContext.getFormsByApiKey();\r\n if (!data) return;\r\n\r\n this._forms = data.forms ?? [];\r\n this._filteredForms = data.forms ?? [];\r\n this._loading = false;\r\n\r\n if (!data.isValid || data.isExpired) {\r\n this._showError(data.error!);\r\n }\r\n }\r\n\r\n #handleFilterInput(event: UUIInputEvent) {\r\n let query = (event.target.value as string) || '';\r\n query = query.toLowerCase();\r\n\r\n const result = !query\r\n ? this._forms\r\n : this._forms.filter((form) => form.name?.includes(query));\r\n\r\n this._filteredForms = result;\r\n }\r\n\r\n private _renderFilter() {\r\n return html` \r\n\t\t\t\r\n\t\t`;\r\n }\r\n\r\n private _onSelect(form: HubspotFormDtoModel) {\r\n this.value = { form };\r\n this._submitModal();\r\n }\r\n\r\n private async _showError(message: string) {\r\n const notificationContext = await this.getContext(UMB_NOTIFICATION_CONTEXT);\r\n notificationContext?.peek(\"danger\", {\r\n data: { message },\r\n });\r\n }\r\n\r\n async #onConnect() {\r\n await this.#loadForms();\r\n }\r\n\r\n async #onRevoke() {\r\n this._filteredForms = [];\r\n await this.#checkApiConfiguration();\r\n }\r\n\r\n render() {\r\n return html`\r\n \r\n \r\n ${this._loading ? html`
` : \"\"}\r\n ${this._renderFilter()}\r\n ${this._filteredForms.map((form) => {\r\n return html`\r\n this._onSelect(form)}>\r\n \r\n `;\r\n })}\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n `;\r\n }\r\n\r\n static styles = [\r\n css`\r\n uui-box {\r\n margin-bottom: var(--uui-size-8);\r\n }\r\n\r\n #filter {\r\n width: 100%;\r\n margin-bottom: var(--uui-size-3);\r\n }\r\n\r\n uui-icon {\r\n margin: auto;\r\n margin-left: var(--uui-size-2);\r\n }\r\n `];\r\n}"],"names":["_hubspotFormsContext","_settingsModel","_HubspotFormsModalElement_instances","checkApiConfiguration_fn","loadForms_fn","handleFilterInput_fn","onConnect_fn","onRevoke_fn","elementName","HubspotFormsModalElement","UmbModalBaseElement","__privateAdd","HUBSPOT_FORMS_CONTEXT_TOKEN","context","__privateSet","settingsModel","__privateMethod","html","form","message","notificationContext","UMB_NOTIFICATION_CONTEXT","__privateGet","data","event","query","result","_a","css","__decorateClass","state","customElement"],"mappings":"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"} \ No newline at end of file diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/hubspot.js b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/hubspot.js new file mode 100644 index 00000000..353d761a --- /dev/null +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/hubspot.js @@ -0,0 +1,8 @@ +import "@umbraco-cms/backoffice/auth"; +import { a, o as m } from "./index-BT2389WJ.js"; +import "@umbraco-cms/backoffice/http-client"; +export { + a as HubspotAuthorizationElement, + m as onInit +}; +//# sourceMappingURL=hubspot.js.map diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/hubspot.js.map b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/hubspot.js.map new file mode 100644 index 00000000..6b4552e0 --- /dev/null +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/hubspot.js.map @@ -0,0 +1 @@ +{"version":3,"file":"hubspot.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"} \ No newline at end of file diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/index-BT2389WJ.js b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/index-BT2389WJ.js new file mode 100644 index 00000000..9946ba02 --- /dev/null +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/index-BT2389WJ.js @@ -0,0 +1,675 @@ +var ue = Object.defineProperty; +var V = (t) => { + throw TypeError(t); +}; +var ce = (t, e, r) => e in t ? ue(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r; +var D = (t, e, r) => ce(t, typeof e != "symbol" ? e + "" : e, r), W = (t, e, r) => e.has(t) || V("Cannot " + r); +var p = (t, e, r) => (W(t, e, "read from private field"), r ? r.call(t) : e.get(t)), P = (t, e, r) => e.has(t) ? V("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, r), $ = (t, e, r, o) => (W(t, e, "write to private field"), o ? o.call(t, r) : e.set(t, r), r); +import { UMB_AUTH_CONTEXT as le } from "@umbraco-cms/backoffice/auth"; +import { umbHttpClient as he } from "@umbraco-cms/backoffice/http-client"; +import { UmbElementMixin as pe } from "@umbraco-cms/backoffice/element-api"; +import { LitElement as de, when as B, html as I, css as fe, state as M, property as me, query as ye, customElement as be } from "@umbraco-cms/backoffice/external/lit"; +import { UMB_NOTIFICATION_CONTEXT as ge } from "@umbraco-cms/backoffice/notification"; +import { UmbControllerBase as J } from "@umbraco-cms/backoffice/class-api"; +import { UmbContextToken as ve } from "@umbraco-cms/backoffice/context-api"; +import { tryExecute as v } from "@umbraco-cms/backoffice/resources"; +import { UmbObjectState as Ae } from "@umbraco-cms/backoffice/observable-api"; +const we = { + type: "propertyEditorUi", + alias: "HubSpot.PropertyEditorUi.FormPicker", + name: "HubSpot Form Picker Property Editor UI", + js: () => import("./form-picker-property-editor.element-zQFjcuHH.js"), + elementName: "hubspot-form-picker", + meta: { + label: "HubSpot Form Picker", + icon: "icon-handshake", + group: "pickers", + propertyEditorSchemaAlias: "HubSpot.FormPicker" + } +}, ke = { + type: "propertyEditorSchema", + name: "HubSpot Form Picker", + alias: "HubSpot.FormPicker", + meta: { + defaultPropertyEditorUiAlias: "HubSpot.PropertyEditorUi.FormPicker", + settings: { + properties: [ + { + alias: "hubspot.authorization", + label: "Authorization", + description: "Authorization Details", + propertyEditorUiAlias: "HubSpot.PropertyEditorUi.Authorization" + } + ] + } + } +}, _e = { + type: "propertyEditorUi", + alias: "HubSpot.PropertyEditorUi.Authorization", + name: "HubSpot Authorization Property Editor UI", + js: () => Promise.resolve().then(() => Le), + elementName: "hubspot-authorization", + meta: { + label: "Authorization", + icon: "", + group: "" + } +}, Ce = [ + we, + ke, + _e +], Se = { + type: "globalContext", + alias: "hubspot-forms.context", + name: "Hubspot Forms Context", + js: () => Promise.resolve().then(() => De) +}, Te = Se, Ee = { + type: "modal", + alias: "HubspotForms.Modal", + name: "Hubspot Forms Modal", + js: () => import("./hubspot-forms-modal.element-BPxig6w4.js") +}; +var Oe = async (t, e) => { + let r = typeof e == "function" ? await e(t) : e; + if (r) return t.scheme === "bearer" ? `Bearer ${r}` : t.scheme === "basic" ? `Basic ${btoa(r)}` : r; +}, xe = { bodySerializer: (t) => JSON.stringify(t, (e, r) => typeof r == "bigint" ? r.toString() : r) }, Ue = (t) => { + switch (t) { + case "label": + return "."; + case "matrix": + return ";"; + case "simple": + return ","; + default: + return "&"; + } +}, ze = (t) => { + switch (t) { + case "form": + return ","; + case "pipeDelimited": + return "|"; + case "spaceDelimited": + return "%20"; + default: + return ","; + } +}, je = (t) => { + switch (t) { + case "label": + return "."; + case "matrix": + return ";"; + case "simple": + return ","; + default: + return "&"; + } +}, X = ({ allowReserved: t, explode: e, name: r, style: o, value: i }) => { + if (!e) { + let a = (t ? i : i.map((u) => encodeURIComponent(u))).join(ze(o)); + switch (o) { + case "label": + return `.${a}`; + case "matrix": + return `;${r}=${a}`; + case "simple": + return a; + default: + return `${r}=${a}`; + } + } + let n = Ue(o), s = i.map((a) => o === "label" || o === "simple" ? t ? a : encodeURIComponent(a) : j({ allowReserved: t, name: r, value: a })).join(n); + return o === "label" || o === "matrix" ? n + s : s; +}, j = ({ allowReserved: t, name: e, value: r }) => { + if (r == null) return ""; + if (typeof r == "object") throw new Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these."); + return `${e}=${t ? r : encodeURIComponent(r)}`; +}, Q = ({ allowReserved: t, explode: e, name: r, style: o, value: i, valueOnly: n }) => { + if (i instanceof Date) return n ? i.toISOString() : `${r}=${i.toISOString()}`; + if (o !== "deepObject" && !e) { + let u = []; + Object.entries(i).forEach(([g, x]) => { + u = [...u, g, t ? x : encodeURIComponent(x)]; + }); + let f = u.join(","); + switch (o) { + case "form": + return `${r}=${f}`; + case "label": + return `.${f}`; + case "matrix": + return `;${r}=${f}`; + default: + return f; + } + } + let s = je(o), a = Object.entries(i).map(([u, f]) => j({ allowReserved: t, name: o === "deepObject" ? `${r}[${u}]` : u, value: f })).join(s); + return o === "label" || o === "matrix" ? s + a : a; +}, Pe = /\{[^{}]+\}/g, $e = ({ path: t, url: e }) => { + let r = e, o = e.match(Pe); + if (o) for (let i of o) { + let n = !1, s = i.substring(1, i.length - 1), a = "simple"; + s.endsWith("*") && (n = !0, s = s.substring(0, s.length - 1)), s.startsWith(".") ? (s = s.substring(1), a = "label") : s.startsWith(";") && (s = s.substring(1), a = "matrix"); + let u = t[s]; + if (u == null) continue; + if (Array.isArray(u)) { + r = r.replace(i, X({ explode: n, name: s, style: a, value: u })); + continue; + } + if (typeof u == "object") { + r = r.replace(i, Q({ explode: n, name: s, style: a, value: u, valueOnly: !0 })); + continue; + } + if (a === "matrix") { + r = r.replace(i, `;${j({ name: s, value: u })}`); + continue; + } + let f = encodeURIComponent(a === "label" ? `.${u}` : u); + r = r.replace(i, f); + } + return r; +}, Y = ({ allowReserved: t, array: e, object: r } = {}) => (o) => { + let i = []; + if (o && typeof o == "object") for (let n in o) { + let s = o[n]; + if (s != null) if (Array.isArray(s)) { + let a = X({ allowReserved: t, explode: !0, name: n, style: "form", value: s, ...e }); + a && i.push(a); + } else if (typeof s == "object") { + let a = Q({ allowReserved: t, explode: !0, name: n, style: "deepObject", value: s, ...r }); + a && i.push(a); + } else { + let a = j({ allowReserved: t, name: n, value: s }); + a && i.push(a); + } + } + return i.join("&"); +}, Ie = (t) => { + var r; + if (!t) return "stream"; + let e = (r = t.split(";")[0]) == null ? void 0 : r.trim(); + if (e) { + if (e.startsWith("application/json") || e.endsWith("+json")) return "json"; + if (e === "multipart/form-data") return "formData"; + if (["application/", "audio/", "image/", "video/"].some((o) => e.startsWith(o))) return "blob"; + if (e.startsWith("text/")) return "text"; + } +}, He = async ({ security: t, ...e }) => { + for (let r of t) { + let o = await Oe(r, e.auth); + if (!o) continue; + let i = r.name ?? "Authorization"; + switch (r.in) { + case "query": + e.query || (e.query = {}), e.query[i] = o; + break; + case "cookie": + e.headers.append("Cookie", `${i}=${o}`); + break; + case "header": + default: + e.headers.set(i, o); + break; + } + return; + } +}, K = (t) => Re({ baseUrl: t.baseUrl, path: t.path, query: t.query, querySerializer: typeof t.querySerializer == "function" ? t.querySerializer : Y(t.querySerializer), url: t.url }), Re = ({ baseUrl: t, path: e, query: r, querySerializer: o, url: i }) => { + let n = i.startsWith("/") ? i : `/${i}`, s = (t ?? "") + n; + e && (s = $e({ path: e, url: s })); + let a = r ? o(r) : ""; + return a.startsWith("?") && (a = a.substring(1)), a && (s += `?${a}`), s; +}, G = (t, e) => { + var o; + let r = { ...t, ...e }; + return (o = r.baseUrl) != null && o.endsWith("/") && (r.baseUrl = r.baseUrl.substring(0, r.baseUrl.length - 1)), r.headers = Z(t.headers, e.headers), r; +}, Z = (...t) => { + let e = new Headers(); + for (let r of t) { + if (!r || typeof r != "object") continue; + let o = r instanceof Headers ? r.entries() : Object.entries(r); + for (let [i, n] of o) if (n === null) e.delete(i); + else if (Array.isArray(n)) for (let s of n) e.append(i, s); + else n !== void 0 && e.set(i, typeof n == "object" ? JSON.stringify(n) : n); + } + return e; +}, H = class { + constructor() { + D(this, "_fns"); + this._fns = []; + } + clear() { + this._fns = []; + } + getInterceptorIndex(t) { + return typeof t == "number" ? this._fns[t] ? t : -1 : this._fns.indexOf(t); + } + exists(t) { + let e = this.getInterceptorIndex(t); + return !!this._fns[e]; + } + eject(t) { + let e = this.getInterceptorIndex(t); + this._fns[e] && (this._fns[e] = null); + } + update(t, e) { + let r = this.getInterceptorIndex(t); + return this._fns[r] ? (this._fns[r] = e, t) : !1; + } + use(t) { + return this._fns = [...this._fns, t], this._fns.length - 1; + } +}, Fe = () => ({ error: new H(), request: new H(), response: new H() }), Me = Y({ allowReserved: !1, array: { explode: !0, style: "form" }, object: { explode: !0, style: "deepObject" } }), qe = { "Content-Type": "application/json" }, ee = (t = {}) => ({ ...xe, headers: qe, parseAs: "auto", querySerializer: Me, ...t }), Ne = (t = {}) => { + let e = G(ee(), t), r = () => ({ ...e }), o = (s) => (e = G(e, s), r()), i = Fe(), n = async (s) => { + let a = { ...e, ...s, fetch: s.fetch ?? e.fetch ?? globalThis.fetch, headers: Z(e.headers, s.headers) }; + a.security && await He({ ...a, security: a.security }), a.body && a.bodySerializer && (a.body = a.bodySerializer(a.body)), (a.body === void 0 || a.body === "") && a.headers.delete("Content-Type"); + let u = K(a), f = { redirect: "follow", ...a }, g = new Request(u, f); + for (let l of i.request._fns) l && (g = await l(g, a)); + let x = a.fetch, c = await x(g); + for (let l of i.response._fns) l && (c = await l(c, g, a)); + let U = { request: g, response: c }; + if (c.ok) { + if (c.status === 204 || c.headers.get("Content-Length") === "0") return a.responseStyle === "data" ? {} : { data: {}, ...U }; + let l = (a.parseAs === "auto" ? Ie(c.headers.get("Content-Type")) : a.parseAs) ?? "json"; + if (l === "stream") return a.responseStyle === "data" ? c.body : { data: c.body, ...U }; + let O = await c[l](); + return l === "json" && (a.responseValidator && await a.responseValidator(O), a.responseTransformer && (O = await a.responseTransformer(O))), a.responseStyle === "data" ? O : { data: O, ...U }; + } + let z = await c.text(); + try { + z = JSON.parse(z); + } catch { + } + let E = z; + for (let l of i.error._fns) l && (E = await l(z, c, g, a)); + if (E = E || {}, a.throwOnError) throw E; + return a.responseStyle === "data" ? void 0 : { error: E, ...U }; + }; + return { buildUrl: K, connect: (s) => n({ ...s, method: "CONNECT" }), delete: (s) => n({ ...s, method: "DELETE" }), get: (s) => n({ ...s, method: "GET" }), getConfig: r, head: (s) => n({ ...s, method: "HEAD" }), interceptors: i, options: (s) => n({ ...s, method: "OPTIONS" }), patch: (s) => n({ ...s, method: "PATCH" }), post: (s) => n({ ...s, method: "POST" }), put: (s) => n({ ...s, method: "PUT" }), request: n, setConfig: o, trace: (s) => n({ ...s, method: "TRACE" }) }; +}; +const y = Ne(ee({ + baseUrl: "http://localhost:28157", + throwOnError: !0 +})); +class A { + static postGetAccessToken(e) { + return ((e == null ? void 0 : e.client) ?? y).post({ + security: [ + { + scheme: "bearer", + type: "http" + } + ], + url: "/umbraco/hubspot-forms/management/api/v1/forms/access-token", + ...e, + headers: { + "Content-Type": "application/json", + ...e == null ? void 0 : e.headers + } + }); + } + static getAuthorizationUrl(e) { + return ((e == null ? void 0 : e.client) ?? y).get({ + security: [ + { + scheme: "bearer", + type: "http" + } + ], + url: "/umbraco/hubspot-forms/management/api/v1/forms/authorization-url", + ...e + }); + } + static getCheckConfiguration(e) { + return ((e == null ? void 0 : e.client) ?? y).get({ + security: [ + { + scheme: "bearer", + type: "http" + } + ], + url: "/umbraco/hubspot-forms/management/api/v1/forms/check-configuration", + ...e + }); + } + static getFormsByApiKey(e) { + return ((e == null ? void 0 : e.client) ?? y).get({ + security: [ + { + scheme: "bearer", + type: "http" + } + ], + url: "/umbraco/hubspot-forms/management/api/v1/forms/get", + ...e + }); + } + static getFormsOAuth(e) { + return ((e == null ? void 0 : e.client) ?? y).get({ + security: [ + { + scheme: "bearer", + type: "http" + } + ], + url: "/umbraco/hubspot-forms/management/api/v1/forms/oauth/get", + ...e + }); + } + static postRefreshAccessToken(e) { + return ((e == null ? void 0 : e.client) ?? y).post({ + security: [ + { + scheme: "bearer", + type: "http" + } + ], + url: "/umbraco/hubspot-forms/management/api/v1/forms/refresh", + ...e + }); + } + static postRevokeAccessToken(e) { + return ((e == null ? void 0 : e.client) ?? y).post({ + security: [ + { + scheme: "bearer", + type: "http" + } + ], + url: "/umbraco/hubspot-forms/management/api/v1/forms/revoke", + ...e + }); + } + static getValidateAccessToken(e) { + return ((e == null ? void 0 : e.client) ?? y).get({ + security: [ + { + scheme: "bearer", + type: "http" + } + ], + url: "/umbraco/hubspot-forms/management/api/v1/forms/validate", + ...e + }); + } +} +const _ = { + api: "An API key is configured and will be used to connect to your HubSpot account.", + oauth: "No API key is configured. To connect to your HubSpot account using OAuth click 'Connect', select your account and agree to the permissions.", + oauthConnected: "OAuth is configured and an access token is available to connect to your HubSpot account. To revoke, click 'Revoke'", + none: "No API or OAuth configuration could be found. Please review your settings before continuing." +}; +class Ve extends J { + constructor(e) { + super(e); + } + async getAuthorizationUrl() { + const { data: e, error: r } = await v(this, A.getAuthorizationUrl()); + return r || !e ? { error: r } : { data: e }; + } + async checkApiConfiguration() { + const { data: e, error: r } = await v(this, A.getCheckConfiguration()); + return r || !e ? { error: r } : { data: e }; + } + async getAccessToken(e) { + const { data: r, error: o } = await v(this, A.postGetAccessToken({ + body: e + })); + return o || !r ? { error: o } : { data: r }; + } + async validateAccessToken() { + const { data: e, error: r } = await v(this, A.getValidateAccessToken()); + return r || !e ? { error: r } : { data: e }; + } + async refreshAccessToken() { + const { data: e, error: r } = await v(this, A.postRefreshAccessToken()); + return r || !e ? { error: r } : { data: e }; + } + async revokeAccessToken() { + const { data: e, error: r } = await v(this, A.postRevokeAccessToken()); + return r || !e ? { error: r } : { data: e }; + } + async getFormsByApiKey() { + const { data: e, error: r } = await v(this, A.getFormsByApiKey()); + return r || !e ? { error: r } : { data: e }; + } + async getFormsOAuth() { + const { data: e, error: r } = await v(this, A.getFormsOAuth()); + return r || !e ? { error: r } : { data: e }; + } +} +var h, S; +class F extends J { + constructor(r) { + super(r); + P(this, h); + P(this, S); + $(this, S, new Ae(void 0)), this.settingsModel = p(this, S).asObservable(), this.provideContext(q, this), $(this, h, new Ve(r)); + } + async hostConnected() { + super.hostConnected(), this.checkApiConfiguration(); + } + async getAuthorizationUrl() { + return await p(this, h).getAuthorizationUrl(); + } + async checkApiConfiguration() { + const { data: r } = await p(this, h).checkApiConfiguration(); + p(this, S).setValue(r); + } + async getAccessToken(r) { + return await p(this, h).getAccessToken(r); + } + async validateAccessToken() { + return await p(this, h).validateAccessToken(); + } + async refreshAccessToken() { + return await p(this, h).refreshAccessToken(); + } + async revokeAccessToken() { + return await p(this, h).revokeAccessToken(); + } + async getFormsByApiKey() { + return await p(this, h).getFormsByApiKey(); + } + async getFormsOAuth() { + return await p(this, h).getFormsOAuth(); + } +} +h = new WeakMap(), S = new WeakMap(); +const q = new ve(F.name), De = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + HUBSPOT_FORMS_CONTEXT_TOKEN: q, + HubspotFormsContext: F, + default: F +}, Symbol.toStringTag, { value: "Module" })); +var We = Object.defineProperty, Be = Object.getOwnPropertyDescriptor, te = (t) => { + throw TypeError(t); +}, T = (t, e, r, o) => { + for (var i = o > 1 ? void 0 : o ? Be(e, r) : e, n = t.length - 1, s; n >= 0; n--) + (s = t[n]) && (i = (o ? s(e, r, i) : s(i)) || i); + return o && i && We(e, r, i), i; +}, N = (t, e, r) => e.has(t) || te("Cannot " + r), d = (t, e, r) => (N(t, e, "read from private field"), r ? r.call(t) : e.get(t)), R = (t, e, r) => e.has(t) ? te("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, r), L = (t, e, r, o) => (N(t, e, "write to private field"), e.set(t, r), r), C = (t, e, r) => (N(t, e, "access private method"), r), k, b, w, re, se, ae, oe, ie, ne; +const Ke = "hubspot-authorization"; +let m = class extends pe(de) { + constructor() { + super(), R(this, w), R(this, k), R(this, b), this._serviceStatus = { + isValid: !1, + type: "", + description: "", + useOAuth: !1 + }, this._oauthSetup = { + isConnected: !1, + isAccessTokenExpired: !1, + isAccessTokenValid: !1 + }, this.value = "", this.showAuthTokenComponent = !1, this.consumeContext(q, (t) => { + t && (L(this, k, t), this.observe(t.settingsModel, (e) => { + L(this, b, e); + })); + }); + } + async connectedCallback() { + super.connectedCallback(), await C(this, w, re).call(this); + } + async getAccessToken(t) { + const { data: e } = await d(this, k).getAccessToken(t); + e && (this.showAuthTokenComponent = !1, e.startsWith("Error:") ? this._showError(e) : (this._oauthSetup = { + isConnected: !0 + }, this._serviceStatus.description = _.oauthConnected, this._showSuccess("OAuth Connected"), this.dispatchEvent(new CustomEvent("connect")))); + } + async _showSuccess(t) { + await this._showMessage(t, "positive"); + } + async _showError(t) { + await this._showMessage(t, "danger"); + } + async _showMessage(t, e) { + const r = await this.getContext(ge); + r == null || r.peek(e, { + data: { message: t } + }); + } + render() { + return I` +

${this._serviceStatus.description}

+ ${B( + this._serviceStatus.useOAuth, + () => I` +
+ + +
+ ${B(this.showAuthTokenComponent, () => I` +
+ + +
+ `)} + ` + )} + `; + } +}; +k = /* @__PURE__ */ new WeakMap(); +b = /* @__PURE__ */ new WeakMap(); +w = /* @__PURE__ */ new WeakSet(); +re = async function() { + var t, e; + d(this, b) && (this._serviceStatus = { + isValid: d(this, b).isValid, + type: (t = d(this, b).type) == null ? void 0 : t.value, + description: C(this, w, ae).call(this, this._serviceStatus.type), + useOAuth: d(this, b).isValid && ((e = d(this, b).type) == null ? void 0 : e.value) === "OAuth" + }, this._serviceStatus.useOAuth && await C(this, w, se).call(this), d(this, b).isValid || this._showError("Invalid setup. Please review the API/OAuth settings.")); +}; +se = async function() { + const { data: t } = await d(this, k).validateAccessToken(); + t && (this._oauthSetup = { + isConnected: t.isValid, + isAccessTokenExpired: t.isExpired, + isAccessTokenValid: t.isValid + }, this._oauthSetup.isConnected && this._oauthSetup.isAccessTokenValid && (this._serviceStatus.description = _.oauthConnected), this._oauthSetup.isAccessTokenExpired && await d(this, k).refreshAccessToken()); +}; +ae = function(t) { + switch (t) { + case "api": + return _.api; + case "oauth": + return _.oauth; + case "oauthConnected": + return _.oauthConnected; + default: + return _.none; + } +}; +oe = async function() { + const { data: t } = await d(this, k).getAuthorizationUrl(); + if (!t) return; + var e = document.getElementById("authToken"); + e && (e.style.display = "none"); + const r = window.open(t, "Authorize", "width=900,height=700,modal=yes,alwaysRaised=yes"); + setTimeout(() => { + r != null && r.closed || (this.showAuthTokenComponent = !0); + }, 7e3), window.addEventListener("message", async (o) => { + if (o.data.type === "hubspot:oauth:success") { + const i = { + code: o.data.code + }; + await this.getAccessToken(i); + } + }, !1); +}; +ie = async function() { + await d(this, k).revokeAccessToken(), this._oauthSetup = { + isConnected: !1 + }, this._serviceStatus.description = _.none, this._showSuccess("OAuth connection revoked."), this.dispatchEvent(new CustomEvent("revoke")); +}; +ne = async function() { + if (this._authCodeInput.value.length == 0) { + this._showError("Incorrect authorization code."); + return; + } + const t = { + code: this._authCodeInput.value + }; + await this.getAccessToken(t); +}; +m.styles = [ + fe` + #authToken { + margin-top: 20px; + } + #authToken uui-input { + width: 50%; + vertical-align: middle; + } + ` +]; +T([ + M() +], m.prototype, "_serviceStatus", 2); +T([ + M() +], m.prototype, "_oauthSetup", 2); +T([ + me({ type: String }) +], m.prototype, "value", 2); +T([ + M() +], m.prototype, "showAuthTokenComponent", 2); +T([ + ye("#auth-code-input") +], m.prototype, "_authCodeInput", 2); +m = T([ + be(Ke) +], m); +const Ge = m, Le = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ + __proto__: null, + get HubspotAuthorizationElement() { + return m; + }, + default: Ge +}, Symbol.toStringTag, { value: "Module" })), ot = (t, e) => { + e.registerMany([ + ...Ce, + Te, + Ee + ]), t.consumeContext(le, async (r) => { + r && y.setConfig(he.getConfig()); + }); +}; +export { + _ as C, + q as H, + m as a, + ot as o +}; +//# sourceMappingURL=index-BT2389WJ.js.map diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/index-BT2389WJ.js.map b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/index-BT2389WJ.js.map new file mode 100644 index 00000000..d2f8a1af --- /dev/null +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/index-BT2389WJ.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index-BT2389WJ.js","sources":["../Client/src/property-editor/manifests.ts","../Client/src/context/manifest.ts","../Client/src/modal/manifest.ts","../Client/node_modules/@hey-api/client-fetch/dist/index.js","../Client/generated/client.gen.ts","../Client/generated/sdk.gen.ts","../Client/src/models/hubspot-service.model.ts","../Client/src/repository/hubspot-forms.repository.ts","../Client/src/context/hubspot-forms.context.ts","../Client/src/property-editor/authorization-property-editor.element.ts","../Client/src/index.ts"],"sourcesContent":["import type { ManifestPropertyEditorUi, ManifestPropertyEditorSchema } from \"@umbraco-cms/backoffice/property-editor\";\r\n\r\nexport const propertyEditorUiManifest : ManifestPropertyEditorUi = {\r\n type: \"propertyEditorUi\",\r\n alias: \"HubSpot.PropertyEditorUi.FormPicker\",\r\n name: \"HubSpot Form Picker Property Editor UI\",\r\n js: () => import(\"./form-picker-property-editor.element.js\"),\r\n elementName: \"hubspot-form-picker\",\r\n meta: {\r\n label: \"HubSpot Form Picker\",\r\n icon: \"icon-handshake\",\r\n group: \"pickers\",\r\n propertyEditorSchemaAlias: \"HubSpot.FormPicker\"\r\n }\r\n};\r\n\r\nconst propertyEditorSchema : ManifestPropertyEditorSchema = {\r\n type: \"propertyEditorSchema\",\r\n name: \"HubSpot Form Picker\",\r\n alias: \"HubSpot.FormPicker\",\r\n meta: {\r\n defaultPropertyEditorUiAlias: \"HubSpot.PropertyEditorUi.FormPicker\",\r\n settings: {\r\n properties: [\r\n {\r\n alias: \"hubspot.authorization\",\r\n label: \"Authorization\",\r\n description: \"Authorization Details\",\r\n propertyEditorUiAlias: \"HubSpot.PropertyEditorUi.Authorization\"\r\n }\r\n ]\r\n }\r\n }\r\n};\r\n\r\nconst authorizationPropertyEditorUiManifest: ManifestPropertyEditorUi = {\r\n type: \"propertyEditorUi\",\r\n alias: \"HubSpot.PropertyEditorUi.Authorization\",\r\n name: \"HubSpot Authorization Property Editor UI\",\r\n js: () => import(\"./authorization-property-editor.element.js\"),\r\n elementName: \"hubspot-authorization\",\r\n meta: {\r\n label: \"Authorization\",\r\n icon: \"\",\r\n group: \"\"\r\n }\r\n}\r\n\r\nexport const manifests : Array = [\r\n propertyEditorUiManifest,\r\n propertyEditorSchema,\r\n authorizationPropertyEditorUiManifest\r\n];\r\n\r\n","import type { ManifestGlobalContext } from \"@umbraco-cms/backoffice/extension-registry\";\r\n\r\nconst contextManifest: ManifestGlobalContext = {\r\n type: \"globalContext\",\r\n alias: \"hubspot-forms.context\",\r\n name: \"Hubspot Forms Context\",\r\n js: () => import(\"./hubspot-forms.context.js\")\r\n};\r\n\r\nexport const manifest = contextManifest;","import type { ManifestModal } from \"@umbraco-cms/backoffice/modal\";\r\n\r\nexport const manifest: ManifestModal = {\r\n type: \"modal\",\r\n alias: \"HubspotForms.Modal\",\r\n name: \"Hubspot Forms Modal\",\r\n js: () => import(\"./hubspot-forms-modal.element.js\")\r\n}","var A=async(s,r)=>{let e=typeof r==\"function\"?await r(s):r;if(e)return s.scheme===\"bearer\"?`Bearer ${e}`:s.scheme===\"basic\"?`Basic ${btoa(e)}`:e},z=(s,r,e)=>{typeof e==\"string\"||e instanceof Blob?s.append(r,e):s.append(r,JSON.stringify(e));},I=(s,r,e)=>{typeof e==\"string\"?s.append(r,e):s.append(r,JSON.stringify(e));},T={bodySerializer:s=>{let r=new FormData;return Object.entries(s).forEach(([e,a])=>{a!=null&&(Array.isArray(a)?a.forEach(i=>z(r,e,i)):z(r,e,a));}),r}},O={bodySerializer:s=>JSON.stringify(s,(r,e)=>typeof e==\"bigint\"?e.toString():e)},_={bodySerializer:s=>{let r=new URLSearchParams;return Object.entries(s).forEach(([e,a])=>{a!=null&&(Array.isArray(a)?a.forEach(i=>I(r,e,i)):I(r,e,a));}),r.toString()}},U={$body_:\"body\",$headers_:\"headers\",$path_:\"path\",$query_:\"query\"},D=Object.entries(U),P=(s,r)=>{r||(r=new Map);for(let e of s)\"in\"in e?e.key&&r.set(e.key,{in:e.in,map:e.map}):e.args&&P(e.args,r);return r},H=s=>{for(let[r,e]of Object.entries(s))e&&typeof e==\"object\"&&!Object.keys(e).length&&delete s[r];},W=(s,r)=>{let e={body:{},headers:{},path:{},query:{}},a=P(r),i;for(let[o,n]of s.entries())if(r[o]&&(i=r[o]),!!i)if(\"in\"in i)if(i.key){let t=a.get(i.key),l=t.map||i.key;e[t.in][l]=n;}else e.body=n;else for(let[t,l]of Object.entries(n??{})){let u=a.get(t);if(u){let p=u.map||t;e[u.in][p]=l;}else {let p=D.find(([d])=>t.startsWith(d));if(p){let[d,c]=p;e[c][t.slice(d.length)]=l;}else for(let[d,c]of Object.entries(i.allowExtra??{}))if(c){e[d][t]=l;break}}}return H(e),e},B=s=>{switch(s){case \"label\":return \".\";case \"matrix\":return \";\";case \"simple\":return \",\";default:return \"&\"}},N=s=>{switch(s){case \"form\":return \",\";case \"pipeDelimited\":return \"|\";case \"spaceDelimited\":return \"%20\";default:return \",\"}},Q=s=>{switch(s){case \"label\":return \".\";case \"matrix\":return \";\";case \"simple\":return \",\";default:return \"&\"}},S=({allowReserved:s,explode:r,name:e,style:a,value:i})=>{if(!r){let t=(s?i:i.map(l=>encodeURIComponent(l))).join(N(a));switch(a){case \"label\":return `.${t}`;case \"matrix\":return `;${e}=${t}`;case \"simple\":return t;default:return `${e}=${t}`}}let o=B(a),n=i.map(t=>a===\"label\"||a===\"simple\"?s?t:encodeURIComponent(t):m({allowReserved:s,name:e,value:t})).join(o);return a===\"label\"||a===\"matrix\"?o+n:n},m=({allowReserved:s,name:r,value:e})=>{if(e==null)return \"\";if(typeof e==\"object\")throw new Error(\"Deeply-nested arrays/objects aren\\u2019t supported. Provide your own `querySerializer()` to handle these.\");return `${r}=${s?e:encodeURIComponent(e)}`},q=({allowReserved:s,explode:r,name:e,style:a,value:i,valueOnly:o})=>{if(i instanceof Date)return o?i.toISOString():`${e}=${i.toISOString()}`;if(a!==\"deepObject\"&&!r){let l=[];Object.entries(i).forEach(([p,d])=>{l=[...l,p,s?d:encodeURIComponent(d)];});let u=l.join(\",\");switch(a){case \"form\":return `${e}=${u}`;case \"label\":return `.${u}`;case \"matrix\":return `;${e}=${u}`;default:return u}}let n=Q(a),t=Object.entries(i).map(([l,u])=>m({allowReserved:s,name:a===\"deepObject\"?`${e}[${l}]`:l,value:u})).join(n);return a===\"label\"||a===\"matrix\"?n+t:t};var J=/\\{[^{}]+\\}/g,M=({path:s,url:r})=>{let e=r,a=r.match(J);if(a)for(let i of a){let o=false,n=i.substring(1,i.length-1),t=\"simple\";n.endsWith(\"*\")&&(o=true,n=n.substring(0,n.length-1)),n.startsWith(\".\")?(n=n.substring(1),t=\"label\"):n.startsWith(\";\")&&(n=n.substring(1),t=\"matrix\");let l=s[n];if(l==null)continue;if(Array.isArray(l)){e=e.replace(i,S({explode:o,name:n,style:t,value:l}));continue}if(typeof l==\"object\"){e=e.replace(i,q({explode:o,name:n,style:t,value:l,valueOnly:true}));continue}if(t===\"matrix\"){e=e.replace(i,`;${m({name:n,value:l})}`);continue}let u=encodeURIComponent(t===\"label\"?`.${l}`:l);e=e.replace(i,u);}return e},k=({allowReserved:s,array:r,object:e}={})=>i=>{let o=[];if(i&&typeof i==\"object\")for(let n in i){let t=i[n];if(t!=null)if(Array.isArray(t)){let l=S({allowReserved:s,explode:true,name:n,style:\"form\",value:t,...r});l&&o.push(l);}else if(typeof t==\"object\"){let l=q({allowReserved:s,explode:true,name:n,style:\"deepObject\",value:t,...e});l&&o.push(l);}else {let l=m({allowReserved:s,name:n,value:t});l&&o.push(l);}}return o.join(\"&\")},E=s=>{if(!s)return \"stream\";let r=s.split(\";\")[0]?.trim();if(r){if(r.startsWith(\"application/json\")||r.endsWith(\"+json\"))return \"json\";if(r===\"multipart/form-data\")return \"formData\";if([\"application/\",\"audio/\",\"image/\",\"video/\"].some(e=>r.startsWith(e)))return \"blob\";if(r.startsWith(\"text/\"))return \"text\"}},$=async({security:s,...r})=>{for(let e of s){let a=await A(e,r.auth);if(!a)continue;let i=e.name??\"Authorization\";switch(e.in){case \"query\":r.query||(r.query={}),r.query[i]=a;break;case \"cookie\":r.headers.append(\"Cookie\",`${i}=${a}`);break;case \"header\":default:r.headers.set(i,a);break}return}},C=s=>L({baseUrl:s.baseUrl,path:s.path,query:s.query,querySerializer:typeof s.querySerializer==\"function\"?s.querySerializer:k(s.querySerializer),url:s.url}),L=({baseUrl:s,path:r,query:e,querySerializer:a,url:i})=>{let o=i.startsWith(\"/\")?i:`/${i}`,n=(s??\"\")+o;r&&(n=M({path:r,url:n}));let t=e?a(e):\"\";return t.startsWith(\"?\")&&(t=t.substring(1)),t&&(n+=`?${t}`),n},x=(s,r)=>{let e={...s,...r};return e.baseUrl?.endsWith(\"/\")&&(e.baseUrl=e.baseUrl.substring(0,e.baseUrl.length-1)),e.headers=j(s.headers,r.headers),e},j=(...s)=>{let r=new Headers;for(let e of s){if(!e||typeof e!=\"object\")continue;let a=e instanceof Headers?e.entries():Object.entries(e);for(let[i,o]of a)if(o===null)r.delete(i);else if(Array.isArray(o))for(let n of o)r.append(i,n);else o!==void 0&&r.set(i,typeof o==\"object\"?JSON.stringify(o):o);}return r},g=class{_fns;constructor(){this._fns=[];}clear(){this._fns=[];}getInterceptorIndex(r){return typeof r==\"number\"?this._fns[r]?r:-1:this._fns.indexOf(r)}exists(r){let e=this.getInterceptorIndex(r);return !!this._fns[e]}eject(r){let e=this.getInterceptorIndex(r);this._fns[e]&&(this._fns[e]=null);}update(r,e){let a=this.getInterceptorIndex(r);return this._fns[a]?(this._fns[a]=e,r):false}use(r){return this._fns=[...this._fns,r],this._fns.length-1}},v=()=>({error:new g,request:new g,response:new g}),V=k({allowReserved:false,array:{explode:true,style:\"form\"},object:{explode:true,style:\"deepObject\"}}),F={\"Content-Type\":\"application/json\"},w=(s={})=>({...O,headers:F,parseAs:\"auto\",querySerializer:V,...s});var G=(s={})=>{let r=x(w(),s),e=()=>({...r}),a=n=>(r=x(r,n),e()),i=v(),o=async n=>{let t={...r,...n,fetch:n.fetch??r.fetch??globalThis.fetch,headers:j(r.headers,n.headers)};t.security&&await $({...t,security:t.security}),t.body&&t.bodySerializer&&(t.body=t.bodySerializer(t.body)),(t.body===void 0||t.body===\"\")&&t.headers.delete(\"Content-Type\");let l=C(t),u={redirect:\"follow\",...t},p=new Request(l,u);for(let f of i.request._fns)f&&(p=await f(p,t));let d=t.fetch,c=await d(p);for(let f of i.response._fns)f&&(c=await f(c,p,t));let b={request:p,response:c};if(c.ok){if(c.status===204||c.headers.get(\"Content-Length\")===\"0\")return t.responseStyle===\"data\"?{}:{data:{},...b};let f=(t.parseAs===\"auto\"?E(c.headers.get(\"Content-Type\")):t.parseAs)??\"json\";if(f===\"stream\")return t.responseStyle===\"data\"?c.body:{data:c.body,...b};let h=await c[f]();return f===\"json\"&&(t.responseValidator&&await t.responseValidator(h),t.responseTransformer&&(h=await t.responseTransformer(h))),t.responseStyle===\"data\"?h:{data:h,...b}}let R=await c.text();try{R=JSON.parse(R);}catch{}let y=R;for(let f of i.error._fns)f&&(y=await f(R,c,p,t));if(y=y||{},t.throwOnError)throw y;return t.responseStyle===\"data\"?void 0:{error:y,...b}};return {buildUrl:C,connect:n=>o({...n,method:\"CONNECT\"}),delete:n=>o({...n,method:\"DELETE\"}),get:n=>o({...n,method:\"GET\"}),getConfig:e,head:n=>o({...n,method:\"HEAD\"}),interceptors:i,options:n=>o({...n,method:\"OPTIONS\"}),patch:n=>o({...n,method:\"PATCH\"}),post:n=>o({...n,method:\"POST\"}),put:n=>o({...n,method:\"PUT\"}),request:o,setConfig:a,trace:n=>o({...n,method:\"TRACE\"})}};export{W as buildClientParams,G as createClient,w as createConfig,T as formDataBodySerializer,O as jsonBodySerializer,_ as urlSearchParamsBodySerializer};//# sourceMappingURL=index.js.map\n//# sourceMappingURL=index.js.map","// This file is auto-generated by @hey-api/openapi-ts\r\n\r\nimport { type ClientOptions, type Config, createClient, createConfig } from '@hey-api/client-fetch';\r\n\r\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\r\n\r\n/**\r\n * The `createClientConfig()` function will be called on client initialization\r\n * and the returned object will become the client's initial configuration.\r\n *\r\n * You may want to initialize your client this way instead of calling\r\n * `setConfig()`. This is useful for example if you're using Next.js\r\n * to ensure your client always has the correct values.\r\n */\r\nexport type CreateClientConfig = (override?: Config) => Config & T>;\r\n\r\nexport const client = createClient(createConfig({\r\n baseUrl: 'http://localhost:28157',\r\n throwOnError: true\r\n}));\r\n","// This file is auto-generated by @hey-api/openapi-ts\r\n\r\nimport type { Client, Options as Options2, TDataShape } from '@hey-api/client-fetch';\r\n\r\nimport { client } from './client.gen';\r\nimport type { GetAuthorizationUrlData, GetAuthorizationUrlErrors, GetAuthorizationUrlResponses, GetCheckConfigurationData, GetCheckConfigurationErrors, GetCheckConfigurationResponses, GetFormsByApiKeyData, GetFormsByApiKeyErrors, GetFormsByApiKeyResponses, GetFormsOAuthData, GetFormsOAuthErrors, GetFormsOAuthResponses, GetValidateAccessTokenData, GetValidateAccessTokenErrors, GetValidateAccessTokenResponses, PostGetAccessTokenData, PostGetAccessTokenErrors, PostGetAccessTokenResponses, PostRefreshAccessTokenData, PostRefreshAccessTokenErrors, PostRefreshAccessTokenResponses, PostRevokeAccessTokenData, PostRevokeAccessTokenErrors, PostRevokeAccessTokenResponses } from './types.gen';\r\n\r\nexport type Options = Options2 & {\r\n /**\r\n * You can provide a client instance returned by `createClient()` instead of\r\n * individual options. This might be also useful if you want to implement a\r\n * custom client.\r\n */\r\n client?: Client;\r\n /**\r\n * You can pass arbitrary values through the `meta` object. This can be\r\n * used to access values that aren't defined as part of the SDK function.\r\n */\r\n meta?: Record;\r\n};\r\n\r\nexport class Forms {\r\n public static postGetAccessToken(options?: Options) {\r\n return (options?.client ?? client).post({\r\n security: [\r\n {\r\n scheme: 'bearer',\r\n type: 'http'\r\n }\r\n ],\r\n url: '/umbraco/hubspot-forms/management/api/v1/forms/access-token',\r\n ...options,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...options?.headers\r\n }\r\n });\r\n }\r\n \r\n public static getAuthorizationUrl(options?: Options) {\r\n return (options?.client ?? client).get({\r\n security: [\r\n {\r\n scheme: 'bearer',\r\n type: 'http'\r\n }\r\n ],\r\n url: '/umbraco/hubspot-forms/management/api/v1/forms/authorization-url',\r\n ...options\r\n });\r\n }\r\n \r\n public static getCheckConfiguration(options?: Options) {\r\n return (options?.client ?? client).get({\r\n security: [\r\n {\r\n scheme: 'bearer',\r\n type: 'http'\r\n }\r\n ],\r\n url: '/umbraco/hubspot-forms/management/api/v1/forms/check-configuration',\r\n ...options\r\n });\r\n }\r\n \r\n public static getFormsByApiKey(options?: Options) {\r\n return (options?.client ?? client).get({\r\n security: [\r\n {\r\n scheme: 'bearer',\r\n type: 'http'\r\n }\r\n ],\r\n url: '/umbraco/hubspot-forms/management/api/v1/forms/get',\r\n ...options\r\n });\r\n }\r\n \r\n public static getFormsOAuth(options?: Options) {\r\n return (options?.client ?? client).get({\r\n security: [\r\n {\r\n scheme: 'bearer',\r\n type: 'http'\r\n }\r\n ],\r\n url: '/umbraco/hubspot-forms/management/api/v1/forms/oauth/get',\r\n ...options\r\n });\r\n }\r\n \r\n public static postRefreshAccessToken(options?: Options) {\r\n return (options?.client ?? client).post({\r\n security: [\r\n {\r\n scheme: 'bearer',\r\n type: 'http'\r\n }\r\n ],\r\n url: '/umbraco/hubspot-forms/management/api/v1/forms/refresh',\r\n ...options\r\n });\r\n }\r\n \r\n public static postRevokeAccessToken(options?: Options) {\r\n return (options?.client ?? client).post({\r\n security: [\r\n {\r\n scheme: 'bearer',\r\n type: 'http'\r\n }\r\n ],\r\n url: '/umbraco/hubspot-forms/management/api/v1/forms/revoke',\r\n ...options\r\n });\r\n }\r\n \r\n public static getValidateAccessToken(options?: Options) {\r\n return (options?.client ?? client).get({\r\n security: [\r\n {\r\n scheme: 'bearer',\r\n type: 'http'\r\n }\r\n ],\r\n url: '/umbraco/hubspot-forms/management/api/v1/forms/validate',\r\n ...options\r\n });\r\n }\r\n}\r\n","export interface HubspotServiceConfig {\r\n api: string;\r\n oauth: string;\r\n oauthConnected: string;\r\n none: string;\r\n}\r\n\r\nexport type HubspotServiceStatus = {\r\n isValid: boolean;\r\n type: string;\r\n description: string;\r\n useOAuth: boolean;\r\n}\r\n\r\nexport type HubspotOAuthSetup = {\r\n isConnected?: boolean;\r\n isAccessTokenExpired?: boolean;\r\n isAccessTokenValid?: boolean;\r\n}\r\n\r\nexport const ConfigDescription: HubspotServiceConfig = {\r\n api: \"An API key is configured and will be used to connect to your HubSpot account.\",\r\n oauth: \"No API key is configured. To connect to your HubSpot account using OAuth click 'Connect', select your account and agree to the permissions.\",\r\n oauthConnected: \"OAuth is configured and an access token is available to connect to your HubSpot account. To revoke, click 'Revoke'\",\r\n none: \"No API or OAuth configuration could be found. Please review your settings before continuing.\"\r\n}\r\n\r\n","import { UmbControllerBase } from \"@umbraco-cms/backoffice/class-api\";\r\nimport type { UmbControllerHost } from \"@umbraco-cms/backoffice/controller-api\";\r\nimport { tryExecute } from \"@umbraco-cms/backoffice/resources\";\r\nimport { Forms, type OAuthRequestDtoModel } from \"@umbraco-integrations/hubspot-forms/generated\";\r\n\r\nexport class HubspotFormsRepository extends UmbControllerBase {\r\n constructor(host: UmbControllerHost) {\r\n super(host);\r\n }\r\n\r\n async getAuthorizationUrl() {\r\n const { data, error } = await tryExecute(this, Forms.getAuthorizationUrl());\r\n\r\n if (error || !data) {\r\n return { error };\r\n }\r\n\r\n return { data };\r\n }\r\n\r\n async checkApiConfiguration() {\r\n const { data, error } = await tryExecute(this, Forms.getCheckConfiguration());\r\n\r\n if (error || !data) {\r\n return { error };\r\n }\r\n\r\n return { data };\r\n }\r\n\r\n async getAccessToken(oauthRequestDto: OAuthRequestDtoModel) {\r\n const { data, error } = await tryExecute(this, Forms.postGetAccessToken({\r\n body: oauthRequestDto\r\n }));\r\n\r\n if (error || !data) {\r\n return { error };\r\n }\r\n\r\n return { data };\r\n }\r\n\r\n async validateAccessToken() {\r\n const { data, error } = await tryExecute(this, Forms.getValidateAccessToken());\r\n\r\n if (error || !data) {\r\n return { error };\r\n }\r\n\r\n return { data };\r\n }\r\n\r\n async refreshAccessToken() {\r\n const { data, error } = await tryExecute(this, Forms.postRefreshAccessToken());\r\n\r\n if (error || !data) {\r\n return { error };\r\n }\r\n\r\n return { data };\r\n }\r\n\r\n async revokeAccessToken() {\r\n const { data, error } = await tryExecute(this, Forms.postRevokeAccessToken());\r\n\r\n if (error || !data) {\r\n return { error };\r\n }\r\n\r\n return { data };\r\n }\r\n\r\n async getFormsByApiKey() {\r\n const { data, error } = await tryExecute(this, Forms.getFormsByApiKey());\r\n\r\n if (error || !data) {\r\n return { error };\r\n }\r\n\r\n return { data };\r\n }\r\n\r\n async getFormsOAuth() {\r\n const { data, error } = await tryExecute(this, Forms.getFormsOAuth());\r\n\r\n if (error || !data) {\r\n return { error };\r\n }\r\n\r\n return { data };\r\n }\r\n}","import { UmbControllerBase } from \"@umbraco-cms/backoffice/class-api\";\r\nimport { UmbContextToken } from \"@umbraco-cms/backoffice/context-api\";\r\nimport type { UmbControllerHost } from \"@umbraco-cms/backoffice/controller-api\";\r\n\r\nimport { HubspotFormsRepository } from \"../repository/hubspot-forms.repository.js\";\r\nimport { HubspotFormPickerSettingsModel, type OAuthRequestDtoModel } from \"../../generated/types.gen.js\";\r\nimport { UmbObjectState } from \"@umbraco-cms/backoffice/observable-api\";\r\n\r\nexport class HubspotFormsContext extends UmbControllerBase {\r\n #repository: HubspotFormsRepository;\r\n\r\n #settingsModel = new UmbObjectState(undefined);\r\n settingsModel = this.#settingsModel.asObservable();\r\n\r\n constructor(host: UmbControllerHost) {\r\n super(host);\r\n\r\n this.provideContext(HUBSPOT_FORMS_CONTEXT_TOKEN, this);\r\n this.#repository = new HubspotFormsRepository(host);\r\n }\r\n\r\n async hostConnected() {\r\n super.hostConnected();\r\n this.checkApiConfiguration();\r\n }\r\n\r\n async getAuthorizationUrl() {\r\n return await this.#repository.getAuthorizationUrl();\r\n }\r\n\r\n async checkApiConfiguration() {\r\n const { data } = await this.#repository.checkApiConfiguration();\r\n\r\n this.#settingsModel.setValue(data);\r\n }\r\n\r\n async getAccessToken(oauthRequestDto: OAuthRequestDtoModel) {\r\n return await this.#repository.getAccessToken(oauthRequestDto);\r\n }\r\n\r\n async validateAccessToken() {\r\n return await this.#repository.validateAccessToken();\r\n }\r\n\r\n async refreshAccessToken() {\r\n return await this.#repository.refreshAccessToken();\r\n }\r\n\r\n async revokeAccessToken() {\r\n return await this.#repository.revokeAccessToken();\r\n }\r\n\r\n async getFormsByApiKey() {\r\n return await this.#repository.getFormsByApiKey();\r\n }\r\n\r\n async getFormsOAuth() {\r\n return await this.#repository.getFormsOAuth();\r\n }\r\n}\r\n\r\nexport default HubspotFormsContext;\r\n\r\nexport const HUBSPOT_FORMS_CONTEXT_TOKEN =\r\n new UmbContextToken(HubspotFormsContext.name);","import { UmbElementMixin } from \"@umbraco-cms/backoffice/element-api\";\r\nimport {\r\n LitElement,\r\n css,\r\n customElement,\r\n html,\r\n property,\r\n query,\r\n state,\r\n when\r\n} from \"@umbraco-cms/backoffice/external/lit\";\r\nimport {\r\n UMB_NOTIFICATION_CONTEXT,\r\n type UmbNotificationColor,\r\n} from \"@umbraco-cms/backoffice/notification\";\r\nimport {\r\n ConfigDescription,\r\n type HubspotOAuthSetup,\r\n type HubspotServiceStatus\r\n} from \"../models/hubspot-service.model.js\";\r\nimport { HUBSPOT_FORMS_CONTEXT_TOKEN } from \"@umbraco-integrations/hubspot-forms/context\";\r\nimport type { HubspotFormPickerSettingsModel, OAuthRequestDtoModel } from \"@umbraco-integrations/hubspot-forms/generated\";\r\n\r\nconst elementName = \"hubspot-authorization\";\r\n\r\n@customElement(elementName)\r\nexport class HubspotAuthorizationElement extends UmbElementMixin(LitElement) {\r\n\r\n #hubspotFormsContext!: typeof HUBSPOT_FORMS_CONTEXT_TOKEN.TYPE;\r\n #settingsModel?: HubspotFormPickerSettingsModel;\r\n\r\n @state()\r\n private _serviceStatus: HubspotServiceStatus = {\r\n isValid: false,\r\n type: \"\",\r\n description: \"\",\r\n useOAuth: false\r\n };\r\n\r\n @state()\r\n private _oauthSetup: HubspotOAuthSetup = {\r\n isConnected: false,\r\n isAccessTokenExpired: false,\r\n isAccessTokenValid: false\r\n };\r\n\r\n @property({ type: String })\r\n public value = \"\";\r\n\r\n @state()\r\n showAuthTokenComponent: boolean = false;\r\n\r\n @query('#auth-code-input')\r\n private _authCodeInput!: HTMLInputElement;\r\n\r\n constructor() {\r\n super();\r\n this.consumeContext(HUBSPOT_FORMS_CONTEXT_TOKEN, (context) => {\r\n if (!context) return;\r\n this.#hubspotFormsContext = context;\r\n this.observe(context.settingsModel, (settingsModel) => {\r\n this.#settingsModel = settingsModel;\r\n });\r\n });\r\n }\r\n\r\n async connectedCallback() {\r\n super.connectedCallback();\r\n await this.#checkApiConfiguration();\r\n }\r\n\r\n async #checkApiConfiguration() {\r\n\r\n if (!this.#settingsModel) return;\r\n\r\n this._serviceStatus = {\r\n isValid: this.#settingsModel.isValid,\r\n type: this.#settingsModel.type?.value!,\r\n description: this.#getDescription(this._serviceStatus.type),\r\n useOAuth: this.#settingsModel.isValid && this.#settingsModel.type?.value === \"OAuth\"\r\n }\r\n\r\n if (this._serviceStatus.useOAuth) {\r\n await this.#validateOAuthSetup();\r\n }\r\n\r\n if (!this.#settingsModel.isValid) {\r\n this._showError(\"Invalid setup. Please review the API/OAuth settings.\");\r\n }\r\n }\r\n\r\n async #validateOAuthSetup() {\r\n const { data } = await this.#hubspotFormsContext.validateAccessToken();\r\n if (data) {\r\n this._oauthSetup = {\r\n isConnected: data.isValid,\r\n isAccessTokenExpired: data.isExpired,\r\n isAccessTokenValid: data.isValid\r\n }\r\n\r\n if (this._oauthSetup.isConnected && this._oauthSetup.isAccessTokenValid) {\r\n this._serviceStatus.description = ConfigDescription.oauthConnected;\r\n }\r\n\r\n if (this._oauthSetup.isAccessTokenExpired) {\r\n await this.#hubspotFormsContext.refreshAccessToken();\r\n }\r\n }\r\n }\r\n\r\n #getDescription(type: string): string {\r\n switch (type) {\r\n case \"api\": return ConfigDescription.api;\r\n case \"oauth\": return ConfigDescription.oauth;\r\n case \"oauthConnected\": return ConfigDescription.oauthConnected;\r\n default: return ConfigDescription.none;\r\n }\r\n }\r\n\r\n async #onConnect() {\r\n const { data } = await this.#hubspotFormsContext.getAuthorizationUrl();\r\n if (!data) return;\r\n\r\n var authCodeElement = document.getElementById(\"authToken\");\r\n if (authCodeElement) {\r\n authCodeElement.style.display = \"none\";\r\n }\r\n\r\n const authWin = window.open(data, \"Authorize\", \"width=900,height=700,modal=yes,alwaysRaised=yes\");\r\n\r\n // check in 7 seconds for authorization window closed\r\n setTimeout(() => {\r\n if (!authWin?.closed) {\r\n this.showAuthTokenComponent = true;\r\n }\r\n }, 7000);\r\n\r\n window.addEventListener(\"message\", async (event: MessageEvent) => {\r\n\r\n if (event.data.type === \"hubspot:oauth:success\") {\r\n const oauthRequestDtoModel: OAuthRequestDtoModel = {\r\n code: event.data.code\r\n };\r\n\r\n await this.getAccessToken(oauthRequestDtoModel);\r\n\r\n }\r\n }, false);\r\n }\r\n\r\n async #onRevoke() {\r\n await this.#hubspotFormsContext.revokeAccessToken();\r\n\r\n this._oauthSetup = {\r\n isConnected: false\r\n };\r\n this._serviceStatus.description = ConfigDescription.none;\r\n this._showSuccess(\"OAuth connection revoked.\");\r\n\r\n this.dispatchEvent(new CustomEvent(\"revoke\"));\r\n }\r\n\r\n async #onAuthorize() {\r\n if (this._authCodeInput.value.length == 0) {\r\n this._showError(\"Incorrect authorization code.\");\r\n return;\r\n }\r\n const oauthRequestDtoModel: OAuthRequestDtoModel = {\r\n code: this._authCodeInput.value\r\n };\r\n await this.getAccessToken(oauthRequestDtoModel);\r\n }\r\n\r\n async getAccessToken(oauthRequestDtoModel: OAuthRequestDtoModel) {\r\n const { data } = await this.#hubspotFormsContext.getAccessToken(oauthRequestDtoModel);\r\n if (!data) return;\r\n\r\n this.showAuthTokenComponent = false;\r\n\r\n if (data.startsWith(\"Error:\")) {\r\n this._showError(data);\r\n } else {\r\n this._oauthSetup = {\r\n isConnected: true\r\n };\r\n this._serviceStatus.description = ConfigDescription.oauthConnected;\r\n this._showSuccess(\"OAuth Connected\");\r\n\r\n this.dispatchEvent(new CustomEvent(\"connect\"));\r\n }\r\n }\r\n\r\n private async _showSuccess(message: string) {\r\n await this._showMessage(message, \"positive\");\r\n }\r\n\r\n private async _showError(message: string) {\r\n await this._showMessage(message, \"danger\");\r\n }\r\n\r\n private async _showMessage(message: string, color: UmbNotificationColor) {\r\n const notificationContext = await this.getContext(UMB_NOTIFICATION_CONTEXT);\r\n notificationContext?.peek(color, {\r\n data: { message },\r\n });\r\n }\r\n\r\n render() {\r\n return html`\r\n

${this._serviceStatus.description}

\r\n ${when(this._serviceStatus.useOAuth, () =>\r\n html`\r\n
\r\n \r\n \r\n
\r\n ${when(this.showAuthTokenComponent, () => html`\r\n
\r\n \r\n \r\n
\r\n `)}\r\n `\r\n )}\r\n `;\r\n }\r\n\r\n static styles = [\r\n css`\r\n #authToken { \r\n margin-top: 20px; \r\n }\r\n #authToken uui-input {\r\n width: 50%;\r\n vertical-align: middle;\r\n }\r\n `];\r\n}\r\n\r\nexport default HubspotAuthorizationElement;\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n [elementName]: HubspotAuthorizationElement;\r\n }\r\n}\r\n","import type { UmbEntryPointOnInit } from \"@umbraco-cms/backoffice/extension-api\";\r\nimport { UMB_AUTH_CONTEXT } from \"@umbraco-cms/backoffice/auth\";\r\n\r\nimport { manifests as hubspotPropertyEditor } from \"./property-editor/manifests.js\";\r\nimport { manifest as hubspotContext } from \"./context/manifest.js\";\r\nimport { manifest as hubspotModal } from \"./modal/manifest.js\";\r\n\r\nimport { client } from \"@umbraco-integrations/hubspot-forms/generated\";\r\nimport { umbHttpClient } from \"@umbraco-cms/backoffice/http-client\";\r\n\r\nexport * from \"./property-editor/index.js\";\r\n\r\nexport const onInit: UmbEntryPointOnInit = (host, extensionRegistry) => {\r\n extensionRegistry.registerMany([\r\n ...hubspotPropertyEditor,\r\n hubspotContext,\r\n hubspotModal,\r\n ]);\r\n\r\n host.consumeContext(UMB_AUTH_CONTEXT, async (auth) => {\r\n if (!auth) return;\r\n\r\n client.setConfig(umbHttpClient.getConfig());\r\n });\r\n};\r\n"],"names":["propertyEditorUiManifest","propertyEditorSchema","authorizationPropertyEditorUiManifest","authorizationPropertyEditor_element","manifests","contextManifest","hubspotForms_context","manifest","A","s","r","e","O","B","N","Q","S","a","t","l","o","n","m","q","p","d","u","J","M","k","i","E","_a","$","C","L","x","j","g","__publicField","v","V","F","w","G","f","b","h","R","y","client","createClient","createConfig","Forms","options","ConfigDescription","HubspotFormsRepository","UmbControllerBase","host","data","error","tryExecute","oauthRequestDto","HubspotFormsContext","__privateAdd","_repository","_settingsModel","__privateSet","UmbObjectState","__privateGet","HUBSPOT_FORMS_CONTEXT_TOKEN","UmbContextToken","_hubspotFormsContext","_HubspotAuthorizationElement_instances","checkApiConfiguration_fn","validateOAuthSetup_fn","getDescription_fn","onConnect_fn","onRevoke_fn","onAuthorize_fn","elementName","HubspotAuthorizationElement","UmbElementMixin","LitElement","context","settingsModel","__privateMethod","oauthRequestDtoModel","message","color","notificationContext","UMB_NOTIFICATION_CONTEXT","html","when","_b","type","authCodeElement","authWin","event","css","__decorateClass","state","property","query","customElement","HubspotAuthorizationElement$1","onInit","extensionRegistry","hubspotPropertyEditor","hubspotContext","hubspotModal","UMB_AUTH_CONTEXT","auth","umbHttpClient"],"mappings":"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","x_google_ignoreList":[3]} \ No newline at end of file diff --git a/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/umbraco-package.json b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/umbraco-package.json index cdb25f02..c732ed50 100644 --- a/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/umbraco-package.json +++ b/src/Umbraco.Cms.Integrations.Crm.Hubspot/wwwroot/umbraco-package.json @@ -1,7 +1,7 @@ { "id": "Umbraco.Cms.Integrations.Crm.HubSpot", "name": "Umbraco CMS Integrations: CRM - HubSpot", - "version": "6.0.0", + "version": "8.0.0", "extensions": [ { "name": "Umbraco EntryPoint", diff --git a/src/Umbraco.Cms.Integrations.Search.Algolia/AlgoliaComposer.cs b/src/Umbraco.Cms.Integrations.Search.Algolia/AlgoliaComposer.cs index 71416d65..793caf9c 100644 --- a/src/Umbraco.Cms.Integrations.Search.Algolia/AlgoliaComposer.cs +++ b/src/Umbraco.Cms.Integrations.Search.Algolia/AlgoliaComposer.cs @@ -24,6 +24,7 @@ public void Compose(IUmbracoBuilder builder) builder.AddNotificationHandler(); builder.AddNotificationAsyncHandler(); + builder.AddNotificationAsyncHandler(); builder.Services.AddOptions() .Bind(builder.Config.GetSection(Constants.SettingsPath)); diff --git a/src/Umbraco.Cms.Integrations.Search.Algolia/Client/public/umbraco-package.json b/src/Umbraco.Cms.Integrations.Search.Algolia/Client/public/umbraco-package.json index d554b88f..8e333ab6 100644 --- a/src/Umbraco.Cms.Integrations.Search.Algolia/Client/public/umbraco-package.json +++ b/src/Umbraco.Cms.Integrations.Search.Algolia/Client/public/umbraco-package.json @@ -1,7 +1,7 @@ { "id": "Umbraco.Cms.Integrations.Search.Algolia", "name": "Umbraco CMS Integrations: Search - Algolia", - "version": "5.0.0", + "version": "5.0.2", "extensions": [ { "name": "Umbraco EntryPoint", diff --git a/src/Umbraco.Cms.Integrations.Search.Algolia/Converters/UmbracoMediaPickerConverter.cs b/src/Umbraco.Cms.Integrations.Search.Algolia/Converters/UmbracoMediaPickerConverter.cs index f3298674..eb598162 100644 --- a/src/Umbraco.Cms.Integrations.Search.Algolia/Converters/UmbracoMediaPickerConverter.cs +++ b/src/Umbraco.Cms.Integrations.Search.Algolia/Converters/UmbracoMediaPickerConverter.cs @@ -7,6 +7,8 @@ namespace Umbraco.Cms.Integrations.Search.Algolia.Converters { public class UmbracoMediaPickerConverter : IAlgoliaIndexValueConverter { + const string udiPrefix = "umb://media/"; + private readonly IMediaService _mediaService; public UmbracoMediaPickerConverter(IMediaService mediaService) => _mediaService = mediaService; @@ -21,19 +23,34 @@ public object ParseIndexValues(IProperty property, IndexValue indexValue) if (string.IsNullOrEmpty(parsedIndexValue)) return list; - var inputMedia = JsonSerializer.Deserialize>(parsedIndexValue); + if (parsedIndexValue.StartsWith(udiPrefix)) + { + var guidPart = parsedIndexValue.Substring(udiPrefix.Length); + if (Guid.TryParse(guidPart, out Guid guid)) + { + var mediaItem = _mediaService.GetById(guid); + if (mediaItem != null) + { + list.Add(mediaItem.GetValue("umbracoFile")?.ToString() ?? string.Empty); + } + } + } + else + { + var inputMedia = JsonSerializer.Deserialize>(parsedIndexValue); - if (inputMedia == null) return string.Empty; + if (inputMedia == null) return string.Empty; - foreach (var item in inputMedia) - { - if (item == null) continue; + foreach (var item in inputMedia) + { + if (item == null) continue; - var mediaItem = _mediaService.GetById(Guid.Parse(item.MediaKey)); + var mediaItem = _mediaService.GetById(Guid.Parse(item.MediaKey)); - if (mediaItem == null) continue; + if (mediaItem == null) continue; - list.Add(mediaItem.GetValue("umbracoFile")?.ToString() ?? string.Empty); + list.Add(mediaItem.GetValue("umbracoFile")?.ToString() ?? string.Empty); + } } return list; diff --git a/src/Umbraco.Cms.Integrations.Search.Algolia/Handlers/AlgoliaContentPublishedHandler.cs b/src/Umbraco.Cms.Integrations.Search.Algolia/Handlers/AlgoliaContentPublishedHandler.cs new file mode 100644 index 00000000..247be41f --- /dev/null +++ b/src/Umbraco.Cms.Integrations.Search.Algolia/Handlers/AlgoliaContentPublishedHandler.cs @@ -0,0 +1,31 @@ +using Umbraco.Cms.Core.Cache; +using Umbraco.Cms.Core.Events; +using Umbraco.Cms.Core.Notifications; +using Umbraco.Cms.Core.Sync; +using Umbraco.Extensions; + +namespace Umbraco.Cms.Integrations.Search.Algolia.Handlers +{ + public class AlgoliaContentPublishedHandler : INotificationAsyncHandler + { + private readonly IServerRoleAccessor _serverRoleAccessor; + private readonly DistributedCache _distributedCache; + + public AlgoliaContentPublishedHandler( + IServerRoleAccessor serverRoleAccessor, + DistributedCache distributedCache) + { + _serverRoleAccessor = serverRoleAccessor; + _distributedCache = distributedCache; + } + + public Task HandleAsync(ContentPublishedNotification notification, CancellationToken cancellationToken) + { + if (_serverRoleAccessor.CurrentServerRole == ServerRole.SchedulingPublisher) + { + _distributedCache.RefreshAllContentCache(); + } + return Task.CompletedTask; + } + } +} diff --git a/src/Umbraco.Cms.Integrations.Search.Algolia/Umbraco.Cms.Integrations.Search.Algolia.csproj b/src/Umbraco.Cms.Integrations.Search.Algolia/Umbraco.Cms.Integrations.Search.Algolia.csproj index 7daf894c..7d410477 100644 --- a/src/Umbraco.Cms.Integrations.Search.Algolia/Umbraco.Cms.Integrations.Search.Algolia.csproj +++ b/src/Umbraco.Cms.Integrations.Search.Algolia/Umbraco.Cms.Integrations.Search.Algolia.csproj @@ -15,7 +15,7 @@ https://github.com/umbraco/Umbraco.Cms.Integrations/tree/main/src/Umbraco.Cms.Integrations.Search.Algolia https://github.com/umbraco/Umbraco.Cms.Integrations - 5.0.1 + 5.0.2 Umbraco HQ Umbraco Umbraco;Umbraco-Marketplace