diff --git a/src/Umbraco.Web.UI.Client/LICENSE b/src/Umbraco.Web.UI.Client/LICENSE index aaba059d33..2819c99ca7 100644 --- a/src/Umbraco.Web.UI.Client/LICENSE +++ b/src/Umbraco.Web.UI.Client/LICENSE @@ -27,10 +27,18 @@ Third-party licenses --- Lucide License -ISC License +ISC License Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2022. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--- + +Simple Icons +CC0 1.0 Universal license + +The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. +You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission. diff --git a/src/Umbraco.Web.UI.Client/apps/auth/e2e/login.spec.ts b/src/Umbraco.Web.UI.Client/apps/auth/e2e/login.spec.ts deleted file mode 100644 index d34e280a56..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/e2e/login.spec.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { expect, test } from '@playwright/test'; - -test('login', async ({ page }) => { - await page.goto('/'); - - // Fill input[name="email"] - await page.locator('input[name="email"]').fill('test@umbraco.com'); - - // Fill input[name="password"] - await page.locator('input[name="password"]').fill('test123456'); - - // Wait for console.log to be called - page.on('console', (message) => { - expect(message.text()).toBe('login'); - }); - - // Click [aria-label="Login"] - await page.locator('[aria-label="Login"]').click(); -}); diff --git a/src/Umbraco.Web.UI.Client/apps/auth/index.html b/src/Umbraco.Web.UI.Client/apps/auth/index.html deleted file mode 100644 index 75922ccae2..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - Umbraco Auth - - - - - - - - diff --git a/src/Umbraco.Web.UI.Client/apps/auth/package.json b/src/Umbraco.Web.UI.Client/apps/auth/package.json deleted file mode 100644 index addf6d7ebf..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "@umbraco-cms/login", - "version": "0.0.0", - "license": "MIT", - "author": { - "name": "Umbraco HQ", - "email": "backoffice@umbraco.com" - }, - "type": "module", - "module": "dist/main.js", - "files": [ - "dist" - ], - "scripts": { - "dev": "vite", - "build": "tsc && vite build", - "build:watch": "vite build --watch", - "preview": "vite preview" - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/playwright.config.ts b/src/Umbraco.Web.UI.Client/apps/auth/playwright.config.ts deleted file mode 100644 index f7bf259530..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/playwright.config.ts +++ /dev/null @@ -1,108 +0,0 @@ -import type { PlaywrightTestConfig } from '@playwright/test'; -import { devices } from '@playwright/test'; - -/** - * Read environment variables from file. - * https://github.com/motdotla/dotenv - */ -// require('dotenv').config(); - -/** - * See https://playwright.dev/docs/test-configuration. - */ -const config: PlaywrightTestConfig = { - testDir: './e2e', - /* Maximum time one test can run for. */ - timeout: 30 * 1000, - expect: { - /** - * Maximum time expect() should wait for the condition to be met. - * For example in `await expect(locator).toHaveText();` - */ - timeout: 5000, - }, - /* Run tests in files in parallel */ - fullyParallel: true, - /* Fail the build on CI if you accidentally left test.only in the source code. */ - forbidOnly: !!process.env.CI, - /* Retry on CI only */ - retries: process.env.CI ? 2 : 0, - /* Opt out of parallel tests on CI. */ - workers: process.env.CI ? 1 : undefined, - /* Reporter to use. See https://playwright.dev/docs/test-reporters */ - reporter: 'html', - /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ - use: { - /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */ - actionTimeout: 0, - /* Base URL to use in actions like `await page.goto('/')`. */ - // baseURL: 'http://localhost:3000', - - /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ - trace: 'on-first-retry', - }, - - /* Configure projects for major browsers */ - projects: [ - { - name: 'chromium', - use: { - ...devices['Desktop Chrome'], - }, - }, - - { - name: 'firefox', - use: { - ...devices['Desktop Firefox'], - }, - }, - - { - name: 'webkit', - use: { - ...devices['Desktop Safari'], - }, - }, - - /* Test against mobile viewports. */ - // { - // name: 'Mobile Chrome', - // use: { - // ...devices['Pixel 5'], - // }, - // }, - // { - // name: 'Mobile Safari', - // use: { - // ...devices['iPhone 12'], - // }, - // }, - - /* Test against branded browsers. */ - // { - // name: 'Microsoft Edge', - // use: { - // channel: 'msedge', - // }, - // }, - // { - // name: 'Google Chrome', - // use: { - // channel: 'chrome', - // }, - // }, - ], - - /* Folder for test artifacts such as screenshots, videos, traces, etc. */ - // outputDir: 'test-results/', - - /* Run your local dev server before starting the tests */ - webServer: { - command: 'npm run dev', - port: 5173, - reuseExistingServer: !process.env.CI, - }, -}; - -export default config; diff --git a/src/Umbraco.Web.UI.Client/apps/auth/public/favicon.svg b/src/Umbraco.Web.UI.Client/apps/auth/public/favicon.svg deleted file mode 100644 index 19acb4bc1e..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/public/favicon.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - diff --git a/src/Umbraco.Web.UI.Client/apps/auth/public/login.jpeg b/src/Umbraco.Web.UI.Client/apps/auth/public/login.jpeg deleted file mode 100644 index 412cd17865..0000000000 Binary files a/src/Umbraco.Web.UI.Client/apps/auth/public/login.jpeg and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logo_white.svg b/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logo_white.svg deleted file mode 100644 index 3de8e82ed3..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logo_white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logomark_white.svg b/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logomark_white.svg deleted file mode 100644 index 9372e25d3e..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logomark_white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/auth-layout.element.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/auth-layout.element.ts deleted file mode 100644 index 163ece1736..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/auth-layout.element.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { css, CSSResultGroup, html, LitElement } from 'lit'; -import { customElement } from 'lit/decorators.js'; - -@customElement('umb-auth-layout') -export class UmbAuthLayoutElement extends LitElement { - render() { - return html` -
- - - -
- - - -
- `; - } - - static styles: CSSResultGroup = [ - css` - #background { - position: fixed; - overflow: hidden; - background-position: 50%; - background-repeat: no-repeat; - background-size: cover; - background-image: url('login.jpeg'); - width: 100vw; - height: 100vh; - } - - #logo { - position: fixed; - top: var(--uui-size-space-5); - left: var(--uui-size-space-5); - height: 30px; - } - - #logo img { - height: 100%; - } - - #container { - position: relative; - display: flex; - align-items: center; - justify-content: center; - width: 100vw; - height: 100vh; - } - - #box { - width: 500px; - padding: var(--uui-size-space-6) var(--uui-size-space-5) var(--uui-size-space-5) var(--uui-size-space-5); - } - - #email, - #password { - width: 100%; - } - `, - ]; -} - -declare global { - interface HTMLElementTagNameMap { - 'umb-auth-layout': UmbAuthLayoutElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/auth-legacy.context.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/auth-legacy.context.ts deleted file mode 100644 index 42b0679aab..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/auth-legacy.context.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { LoginRequestModel, IUmbAuthContext, LoginResponse } from './types.js'; - -export class UmbAuthLegacyContext implements IUmbAuthContext { - readonly #AUTH_URL = '/umbraco/backoffice/umbracoapi/authentication/postlogin'; - readonly supportsPersistLogin = true; - - login(data: LoginRequestModel): Promise { - throw new Error('Method not implemented.'); - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/auth.context.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/auth.context.ts deleted file mode 100644 index c38afcb618..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/auth.context.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { UmbAuthRepository } from './auth.repository.js'; -import { LoginRequestModel, IUmbAuthContext } from './types.js'; - -export class UmbAuthContext implements IUmbAuthContext { - readonly #AUTH_URL = '/umbraco/management/api/v1/security/back-office'; - readonly supportsPersistLogin = false; - - #authRepository = new UmbAuthRepository(this.#AUTH_URL); - - public async login(data: LoginRequestModel) { - return this.#authRepository.login(data); - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/auth.repository.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/auth.repository.ts deleted file mode 100644 index f615a915c1..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/auth.repository.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { LoginRequestModel } from './types.js'; - -export class UmbAuthRepository { - #authURL = ''; - - constructor(authUrl: string) { - this.#authURL = authUrl; - } - - public async login(data: LoginRequestModel) { - const request = new Request(this.#authURL + '/login', { - method: 'POST', - body: JSON.stringify({ - username: data.username, - password: data.password, - }), - headers: { - 'Content-Type': 'application/json', - }, - }); - const response = await fetch(request); - - //TODO: What kind of data does the old backoffice expect? - //NOTE: this conditionally adds error and data to the response object - return { - status: response.status, - ...(!response.ok && { error: this.#getErrorText(response) }), - ...(response.ok && { data: 'WHAT DATA SHOULD BE RETURNED?' }), - }; - } - - #getErrorText(response: Response) { - switch (response.status) { - case 401: - return 'Oops! It seems like your login credentials are invalid or expired. Please double-check your username and password and try again.'; - - case 500: - return "We're sorry, but the server encountered an unexpected error. Please refresh the page or try again later.."; - - default: - return response.statusText; - } - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test.element.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test.element.ts deleted file mode 100644 index 7dda2a047e..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test.element.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { css, html, LitElement } from 'lit'; -import { UUITextStyles } from '@umbraco-cms/backoffice/external/uui'; -import { customElement } from 'lit/decorators.js'; - -@customElement('umb-external-login-provider-test') -export class UmbExternalLoginProviderTestElement extends LitElement { - render() { - return html` - Custom External Login Provider -

This is an example of a custom external login provider using the external login provider extension point

- - `; - } - - static styles = [ - UUITextStyles, - css` - :host { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-4); - padding: var(--uui-size-space-5); - border: 1px solid var(--uui-color-border); - background: var(--uui-color-surface-alt); - border-radius: var(--uui-border-radius); - } - p { - margin: 0; - } - `, - ]; -} - -export default UmbExternalLoginProviderTestElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-external-login-provider-test': UmbExternalLoginProviderTestElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test2.element.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test2.element.ts deleted file mode 100644 index 652293ad27..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test2.element.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { css, html, LitElement } from 'lit'; -import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { customElement } from 'lit/decorators.js'; - -@customElement('umb-external-login-provider-test2') -export class UmbExternalLoginProviderTest2Element extends LitElement { - render() { - return html` - Another Custom External Login Provider -

This is an example of another custom external login provider

- - Email - - - - `; - } - - static styles = [ - UUITextStyles, - css` - :host { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-4); - padding: var(--uui-size-space-5); - border: 1px solid var(--uui-color-border); - background: var(--uui-color-surface-alt); - border-radius: var(--uui-border-radius); - } - p { - margin: 0; - } - uui-input { - width: 100%; - } - `, - ]; -} - -export default UmbExternalLoginProviderTest2Element; - -declare global { - interface HTMLElementTagNameMap { - 'umb-external-login-provider-test2': UmbExternalLoginProviderTest2Element; - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/manifests.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/manifests.ts deleted file mode 100644 index 534b6a9cc2..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/manifests.ts +++ /dev/null @@ -1,29 +0,0 @@ -// TODO: could these be renamed as login providers? -import type { ManifestExternalLoginProvider } from '@umbraco-cms/backoffice/extension-registry'; - -export const manifests: Array = [ - { - type: 'externalLoginProvider', - alias: 'Umb.ExternalLoginProvider.Test', - name: 'Test External Login Provider', - elementName: 'umb-external-login-provider-test', - element: () => import('./external-login-provider-test.element.js'), - weight: 2, - meta: { - label: 'Test External Login Provider', - pathname: 'test/test/test', - }, - }, - { - type: 'externalLoginProvider', - alias: 'Umb.ExternalLoginProvider.Test2', - name: 'Test External Login Provider 2', - elementName: 'umb-external-login-provider-test2', - element: () => import('./external-login-provider-test2.element.js'), - weight: 1, - meta: { - label: 'Test External Login Provider 2', - pathname: 'test/test/test', - }, - }, -]; diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/index.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/index.ts deleted file mode 100644 index 43ef4da338..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import 'element-internals-polyfill'; - -import '@umbraco-ui/uui-css/dist/uui-css.css'; -import '../../../src/css/umb-css.css'; -import '@umbraco-ui/uui'; - -import './login.element.js'; diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/login.element.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/login.element.ts deleted file mode 100644 index d55dd07276..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/login.element.ts +++ /dev/null @@ -1,148 +0,0 @@ -import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { css, CSSResultGroup, html, LitElement, nothing } from 'lit'; -import { customElement, property, state } from 'lit/decorators.js'; - -import type { UUIButtonState } from '@umbraco-ui/uui'; -import type { IUmbAuthContext } from './types.js'; -import { UmbAuthLegacyContext } from './auth-legacy.context.js'; -import { UmbAuthContext } from './auth.context.js'; - -import './auth-layout.element.js'; - -@customElement('umb-login') -export default class UmbLoginElement extends LitElement { - #authContext: IUmbAuthContext; - - @property({ type: String, attribute: 'return-url' }) - returnUrl = ''; - - @property({ type: Boolean }) - isLegacy = false; - - @state() - private _loginState: UUIButtonState = undefined; - - @state() - private _loginError = ''; - - constructor() { - super(); - if (this.isLegacy) { - this.#authContext = new UmbAuthLegacyContext(); - } else { - this.#authContext = new UmbAuthContext(); - } - } - - #handleSubmit = async (e: SubmitEvent) => { - e.preventDefault(); - - const form = e.target as HTMLFormElement; - if (!form) return; - - if (!form.checkValidity()) return; - - const formData = new FormData(form); - - const username = formData.get('email') as string; - const password = formData.get('password') as string; - const persist = formData.has('persist'); - - this._loginState = 'waiting'; - - const response = await this.#authContext.login({ username, password, persist }); - - this._loginError = response.error || ''; - this._loginState = response.error ? 'failed' : 'success'; - - if (response.error) return; - - location.href = this.returnUrl; - }; - - get #greeting() { - return [ - 'Happy super Sunday', - 'Happy marvelous Monday', - 'Happy tubular Tuesday', - 'Happy wonderful Wednesday', - 'Happy thunderous Thursday', - 'Happy funky Friday', - 'Happy Saturday', - ][new Date().getDay()]; - } - - render() { - return html` - -
-

${this.#greeting}

- -
- - Email - - - - - Password - - - - ${this.#authContext.supportsPersistLogin - ? html` - Remember me - ` - : nothing} - - ${this.#renderErrorMessage()} - - -
-
-
-
- `; - } - - #renderErrorMessage() { - if (!this._loginError || this._loginState !== 'failed') return nothing; - - return html`

${this._loginError}

`; - } - - static styles: CSSResultGroup = [ - UUITextStyles, - css` - #email, - #password { - width: 100%; - } - .text-danger { - color: var(--uui-color-danger-standalone); - } - `, - ]; -} - -declare global { - interface HTMLElementTagNameMap { - 'umb-login': UmbLoginElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/login.test.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/login.test.ts deleted file mode 100644 index 3bdfaccdd0..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/login.test.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { expect, fixture, html } from '@open-wc/testing'; -import { type UmbTestRunnerWindow, defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; -import UmbLoginElement from './login.element.js'; - -describe('UmbLogin', () => { - let element: UmbLoginElement; - - beforeEach(async () => { - element = await fixture(html``); - }); - - it('is defined with its own instance', () => { - expect(element).to.be.instanceOf(UmbLoginElement); - }); - - if ((window as UmbTestRunnerWindow).__UMBRACO_TEST_RUN_A11Y_TEST) { - it('passes the a11y audit', async () => { - await expect(element).to.be.accessible(defaultA11yConfig); - }); - } -}); diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/types.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/types.ts deleted file mode 100644 index 114c515c5d..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/types.ts +++ /dev/null @@ -1,16 +0,0 @@ -export type LoginRequestModel = { - username: string; - password: string; - persist: boolean; -}; - -export interface IUmbAuthContext { - login(data: LoginRequestModel): Promise; - supportsPersistLogin: boolean; -} - -export type LoginResponse = { - data?: string; - error?: string; - status: number; -}; diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/vite-env.d.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/vite-env.d.ts deleted file mode 100644 index b0fda2b4ce..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/vite-env.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// - -/* -interface ImportMetaEnv { -} -*/ diff --git a/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.json b/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.json deleted file mode 100644 index 3f90319d83..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "declaration": false - }, - "include": ["src/**/*.ts"], - "references": [ - { - "path": "./tsconfig.node.json" - } - ] -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.node.json b/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.node.json deleted file mode 100644 index b8b8971494..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.node.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "module": "esnext", - "moduleResolution": "node", - "allowSyntheticDefaultImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/vite.config.ts b/src/Umbraco.Web.UI.Client/apps/auth/vite.config.ts deleted file mode 100644 index 74cb265ca6..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/vite.config.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { defineConfig } from 'vite'; -import viteTSConfigPaths from 'vite-tsconfig-paths'; - -// https://vitejs.dev/config/ -export default defineConfig({ - build: { - lib: { - entry: 'src/index.ts', - formats: ['es'], - fileName: 'main', - }, - target: 'esnext', - sourcemap: true, - rollupOptions: { - external: [/^@umbraco-cms\/backoffice\//], - output: { - manualChunks: { - uui: ['@umbraco-ui/uui'], - }, - }, - }, - outDir: '../../../Umbraco.Cms.StaticAssets/wwwroot/umbraco/auth', - emptyOutDir: true, - }, - server: { - fs: { - // Allow serving files from the global node_modules folder - allow: ['.', '../../node_modules'], - }, - }, - plugins: [viteTSConfigPaths()], -}); diff --git a/src/Umbraco.Web.UI.Client/devops/icons/index.js b/src/Umbraco.Web.UI.Client/devops/icons/index.js index 29e84f3a96..909ee19094 100644 --- a/src/Umbraco.Web.UI.Client/devops/icons/index.js +++ b/src/Umbraco.Web.UI.Client/devops/icons/index.js @@ -6,12 +6,13 @@ const path = pathModule.default; const getDirName = path.dirname; const glob = globModule.default; -const moduleDirectory = 'src/shared/icon-registry'; +const moduleDirectory = 'src/packages/core/icon-registry'; const iconsOutputDirectory = `${moduleDirectory}/icons`; const umbracoSvgDirectory = `${moduleDirectory}/svgs`; const iconMapJson = `${moduleDirectory}/icon-dictionary.json`; const lucideSvgDirectory = 'node_modules/lucide-static/icons'; +const simpleIconsSvgDirectory = 'node_modules/simple-icons/icons'; const run = async () => { var icons = await collectDictionaryIcons(); @@ -30,7 +31,7 @@ const collectDictionaryIcons = async () => { // Lucide: fileJSON.lucide.forEach((iconDef) => { - if(iconDef.file && iconDef.name) { + if (iconDef.file && iconDef.name) { const path = lucideSvgDirectory + "/" + iconDef.file; try { @@ -50,15 +51,46 @@ const collectDictionaryIcons = async () => { }; icons.push(icon); - } catch(e) { - console.log(`Could not load file: '${path}'`); + } catch (e) { + console.log(`[Lucide] Could not load file: '${path}'`); + } + } + }); + + // SimpleIcons: + fileJSON.simpleIcons.forEach((iconDef) => { + if (iconDef.file && iconDef.name) { + const path = simpleIconsSvgDirectory + "/" + iconDef.file; + + try { + const rawData = readFileSync(path); + let svg = rawData.toString() + const iconFileName = iconDef.name; + + // SimpleIcons need to use fill="currentColor" + const pattern = /fill=/g; + if (!pattern.test(svg)) { + svg = svg.replace(/ { - if(iconDef.file && iconDef.name) { + if (iconDef.file && iconDef.name) { const path = umbracoSvgDirectory + "/" + iconDef.file; try { @@ -75,8 +107,8 @@ const collectDictionaryIcons = async () => { }; icons.push(icon); - } catch(e) { - console.log(`Could not load file: '${path}'`); + } catch (e) { + console.log(`[Umbraco] Could not load file: '${path}'`); } } }); @@ -104,7 +136,7 @@ const collectDiskIcons = async (icons) => { const iconName = iconFileName; // Only append not already defined icons: - if(!icons.find(x => x.name === iconName)) { + if (!icons.find(x => x.name === iconName)) { const icon = { name: iconName, diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index b6ef567796..db9ee79f23 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -9,11 +9,11 @@ "version": "14.0.0-beta003", "license": "MIT", "dependencies": { - "@openid/appauth": "^1.3.1", "@types/dompurify": "^3.0.5", "@types/uuid": "^9.0.8", "@umbraco-ui/uui": "1.7.2", "@umbraco-ui/uui-css": "1.7.2", + "base64-js": "^1.5.1", "dompurify": "^3.0.9", "element-internals-polyfill": "^1.3.10", "lit": "^3.1.2", @@ -44,10 +44,10 @@ "@types/mocha": "^10.0.1", "@typescript-eslint/eslint-plugin": "^6.14.0", "@typescript-eslint/parser": "^7.1.0", - "@web/dev-server-esbuild": "^1.0.1", + "@web/dev-server-esbuild": "^1.0.2", "@web/dev-server-import-maps": "^0.2.0", "@web/dev-server-rollup": "^0.6.1", - "@web/test-runner": "^0.18.0", + "@web/test-runner": "^0.18.1", "@web/test-runner-playwright": "^0.11.0", "babel-loader": "^9.1.3", "eslint": "^8.56.0", @@ -68,10 +68,11 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "remark-gfm": "^3.0.1", - "rollup": "^4.12.0", - "rollup-plugin-esbuild": "^6.1.0", - "rollup-plugin-import-css": "^3.4.0", + "rollup": "^4.14.1", + "rollup-plugin-esbuild": "^6.1.1", + "rollup-plugin-import-css": "^3.5.0", "rollup-plugin-web-worker-loader": "^1.6.1", + "simple-icons": "^11.11.0", "storybook": "^7.6.17", "tiny-glob": "^0.2.9", "tsc-alias": "^1.8.8", @@ -3342,19 +3343,6 @@ "lit-html": "^2.0.0 || ^3.0.0" } }, - "node_modules/@openid/appauth": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@openid/appauth/-/appauth-1.3.1.tgz", - "integrity": "sha512-e54kpi219wES2ijPzeHe1kMnT8VKH8YeTd1GAn9BzVBmutz3tBgcG1y8a4pziNr4vNjFnuD4W446Ua7ELnNDiA==", - "dependencies": { - "@types/base64-js": "^1.3.0", - "@types/jquery": "^3.5.5", - "base64-js": "^1.5.1", - "follow-redirects": "^1.13.3", - "form-data": "^4.0.0", - "opener": "^1.5.2" - } - }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -3381,52 +3369,60 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.6.tgz", - "integrity": "sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.2.1.tgz", + "integrity": "sha512-QSXujx4d4ogDamQA8ckkkRieFzDgZEuZuGiey9G7CuDcbnX4iINKWxTPC5Br2AEzY9ICAvcndqgAUFMMKnS/Tw==", "dev": true, "dependencies": { "debug": "4.3.4", "extract-zip": "2.0.1", "progress": "2.0.3", - "proxy-agent": "6.3.0", - "tar-fs": "3.0.4", + "proxy-agent": "6.4.0", + "semver": "7.6.0", + "tar-fs": "3.0.5", "unbzip2-stream": "1.4.3", - "yargs": "17.7.1" + "yargs": "17.7.2" }, "bin": { "browsers": "lib/cjs/main-cli.js" }, "engines": { - "node": ">=16.3.0" - }, - "peerDependencies": { - "typescript": ">= 4.7.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@puppeteer/browsers/node_modules/yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "node_modules/@puppeteer/browsers/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "yallist": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" } }, + "node_modules/@puppeteer/browsers/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@puppeteer/browsers/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@radix-ui/number": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", @@ -4235,9 +4231,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz", - "integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.1.tgz", + "integrity": "sha512-fH8/o8nSUek8ceQnT7K4EQbSiV7jgkHq81m9lWZFIXjJ7lJzpWXbQFpT/Zh6OZYnpFykvzC3fbEvEAFZu03dPA==", "cpu": [ "arm" ], @@ -4248,9 +4244,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz", - "integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.1.tgz", + "integrity": "sha512-Y/9OHLjzkunF+KGEoJr3heiD5X9OLa8sbT1lm0NYeKyaM3oMhhQFvPB0bNZYJwlq93j8Z6wSxh9+cyKQaxS7PQ==", "cpu": [ "arm64" ], @@ -4261,9 +4257,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz", - "integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.1.tgz", + "integrity": "sha512-+kecg3FY84WadgcuSVm6llrABOdQAEbNdnpi5X3UwWiFVhZIZvKgGrF7kmLguvxHNQy+UuRV66cLVl3S+Rkt+Q==", "cpu": [ "arm64" ], @@ -4274,9 +4270,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz", - "integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.1.tgz", + "integrity": "sha512-2pYRzEjVqq2TB/UNv47BV/8vQiXkFGVmPFwJb+1E0IFFZbIX8/jo1olxqqMbo6xCXf8kabANhp5bzCij2tFLUA==", "cpu": [ "x64" ], @@ -4287,9 +4283,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz", - "integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.1.tgz", + "integrity": "sha512-mS6wQ6Do6/wmrF9aTFVpIJ3/IDXhg1EZcQFYHZLHqw6AzMBjTHWnCG35HxSqUNphh0EHqSM6wRTT8HsL1C0x5g==", "cpu": [ "arm" ], @@ -4300,9 +4296,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz", - "integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.1.tgz", + "integrity": "sha512-p9rGKYkHdFMzhckOTFubfxgyIO1vw//7IIjBBRVzyZebWlzRLeNhqxuSaZ7kCEKVkm/kuC9fVRW9HkC/zNRG2w==", "cpu": [ "arm64" ], @@ -4313,9 +4309,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz", - "integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.1.tgz", + "integrity": "sha512-nDY6Yz5xS/Y4M2i9JLQd3Rofh5OR8Bn8qe3Mv/qCVpHFlwtZSBYSPaU4mrGazWkXrdQ98GB//H0BirGR/SKFSw==", "cpu": [ "arm64" ], @@ -4325,10 +4321,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.1.tgz", + "integrity": "sha512-im7HE4VBL+aDswvcmfx88Mp1soqL9OBsdDBU8NqDEYtkri0qV0THhQsvZtZeNNlLeCUQ16PZyv7cqutjDF35qw==", + "cpu": [ + "ppc64le" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz", - "integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.1.tgz", + "integrity": "sha512-RWdiHuAxWmzPJgaHJdpvUUlDz8sdQz4P2uv367T2JocdDa98iRw2UjIJ4QxSyt077mXZT2X6pKfT2iYtVEvOFw==", "cpu": [ "riscv64" ], @@ -4338,10 +4347,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.1.tgz", + "integrity": "sha512-VMgaGQ5zRX6ZqV/fas65/sUGc9cPmsntq2FiGmayW9KMNfWVG/j0BAqImvU4KTeOOgYSf1F+k6at1UfNONuNjA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz", - "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.1.tgz", + "integrity": "sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA==", "cpu": [ "x64" ], @@ -4352,9 +4374,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz", - "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.1.tgz", + "integrity": "sha512-JNEG/Ti55413SsreTguSx0LOVKX902OfXIKVg+TCXO6Gjans/k9O6ww9q3oLGjNDaTLxM+IHFMeXy/0RXL5R/g==", "cpu": [ "x64" ], @@ -4365,9 +4387,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz", - "integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.1.tgz", + "integrity": "sha512-ryS22I9y0mumlLNwDFYZRDFLwWh3aKaC72CWjFcFvxK0U6v/mOkM5Up1bTbCRAhv3kEIwW2ajROegCIQViUCeA==", "cpu": [ "arm64" ], @@ -4378,9 +4400,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz", - "integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.1.tgz", + "integrity": "sha512-TdloItiGk+T0mTxKx7Hp279xy30LspMso+GzQvV2maYePMAWdmrzqSNZhUpPj3CGw12aGj57I026PgLCTu8CGg==", "cpu": [ "ia32" ], @@ -4391,9 +4413,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz", - "integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.1.tgz", + "integrity": "sha512-wQGI+LY/Py20zdUPq+XCem7JcPOyzIJBm3dli+56DJsQOHbnXZFEwgmnC6el1TPAfC8lBT3m+z69RmLykNUbew==", "cpu": [ "x64" ], @@ -5904,11 +5926,6 @@ "@babel/types": "^7.20.7" } }, - "node_modules/@types/base64-js": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/base64-js/-/base64-js-1.3.2.tgz", - "integrity": "sha512-Q2Xn2/vQHRGLRXhQ5+BSLwhHkR3JVflxVKywH0Q6fVoAiUE8fFYL2pE5/l2ZiOiBDfA8qUqRnSxln4G/NFz1Sg==" - }, "node_modules/@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", @@ -6126,14 +6143,6 @@ "@types/istanbul-lib-report": "*" } }, - "node_modules/@types/jquery": { - "version": "3.5.29", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.29.tgz", - "integrity": "sha512-oXQQC9X9MOPRrMhPHHOsXqeQDnWeCDT3PelUIg/Oy8FAbzSZtFHRjc7IpbfFVmpLtJ+UOoywpRsuO5Jxjybyeg==", - "dependencies": { - "@types/sizzle": "*" - } - }, "node_modules/@types/js-levenshtein": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.3.tgz", @@ -6367,11 +6376,6 @@ "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", "dev": true }, - "node_modules/@types/sizzle": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", - "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==" - }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", @@ -8212,15 +8216,15 @@ } }, "node_modules/@web/test-runner": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.18.0.tgz", - "integrity": "sha512-aAlQrdSqwCie1mxuSK5kM0RYDJZL4Q0Hd5LeXn1on3OtHLtgztL4dZzzNSuAWablR2/Vuve3ChwDDxmYSTqXRg==", + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.18.1.tgz", + "integrity": "sha512-jB/9vrpGVtcLY6/7sPpKpSheQ3wWY9P5aQcz2SK2gMHTq3gNpa51NAyec0Al7EFpHvJ1wKYTGRLB2gPyEoJeDg==", "dev": true, "dependencies": { "@web/browser-logs": "^0.4.0", "@web/config-loader": "^0.3.0", "@web/dev-server": "^0.4.0", - "@web/test-runner-chrome": "^0.15.0", + "@web/test-runner-chrome": "^0.16.0", "@web/test-runner-commands": "^0.9.0", "@web/test-runner-core": "^0.13.0", "@web/test-runner-mocha": "^0.9.0", @@ -8243,16 +8247,16 @@ } }, "node_modules/@web/test-runner-chrome": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.15.0.tgz", - "integrity": "sha512-ZqkTJGQ57FDz3lWw+9CKfHuTV64S9GzBy5+0siSQulEVPfGiTzpksx9DohtA3BCLXdbEq4OHg40/XIQJomlc9w==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.16.0.tgz", + "integrity": "sha512-Edc6Y49aVB6k18S5IOj9OCX3rEf8F3jptIu0p95+imqxmcutFEh1GNmlAk2bQGnXS0U6uVY7Xbf61fiaXUQqhg==", "dev": true, "dependencies": { "@web/test-runner-core": "^0.13.0", "@web/test-runner-coverage-v8": "^0.8.0", "async-mutex": "0.4.0", "chrome-launcher": "^0.15.0", - "puppeteer-core": "^20.0.0" + "puppeteer-core": "^22.0.0" }, "engines": { "node": ">=18.0.0" @@ -8487,9 +8491,9 @@ } }, "node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "dependencies": { "debug": "^4.3.4" @@ -8915,7 +8919,8 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "node_modules/available-typed-arrays": { "version": "1.0.6", @@ -8945,9 +8950,9 @@ "dev": true }, "node_modules/b4a": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", "dev": true }, "node_modules/babel-core": { @@ -9160,6 +9165,42 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/bare-events": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz", + "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==", + "dev": true, + "optional": true + }, + "node_modules/bare-fs": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.2.3.tgz", + "integrity": "sha512-amG72llr9pstfXOBOHve1WjiuKKAMnebcmMbPWDZ7BCevAoJLpugjuAPRsDINEyjT0a6tbaVx3DctkXIRbLuJw==", + "dev": true, + "optional": true, + "dependencies": { + "bare-events": "^2.0.0", + "bare-path": "^2.0.0", + "streamx": "^2.13.0" + } + }, + "node_modules/bare-os": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.2.1.tgz", + "integrity": "sha512-OwPyHgBBMkhC29Hl3O4/YfxW9n7mdTr2+SsO29XBWKKJsbgj3mnorDB80r5TiCQgQstgE5ga1qNYrpes6NvX2w==", + "dev": true, + "optional": true + }, + "node_modules/bare-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.1.tgz", + "integrity": "sha512-OHM+iwRDRMDBsSW7kl3dO62JyHdBKO3B25FB9vNQBPcGHMo4+eA8Yj41Lfbk3pS/seDY+siNge0LdRTulAau/A==", + "dev": true, + "optional": true, + "dependencies": { + "bare-os": "^2.1.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -9180,9 +9221,9 @@ ] }, "node_modules/basic-ftp": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.4.tgz", - "integrity": "sha512-8PzkB0arJFV4jJWSGOYR+OEic6aeKMu/osRhBULN6RY0ykby6LKhbmuQ5ublvaas5BOwboah5D87nrHyuh8PPA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -9703,12 +9744,14 @@ } }, "node_modules/chromium-bidi": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz", - "integrity": "sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.16.tgz", + "integrity": "sha512-IT5lnR44h/qZQ4GaCHvBxYIl4cQL2i9UvFyYeRyVdcpY04hx5H720HQfe/7Oz7ndxaYVLQFGpCO71J4X2Ye/Gw==", "dev": true, "dependencies": { - "mitt": "3.0.0" + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0", + "zod": "3.22.4" }, "peerDependencies": { "devtools-protocol": "*" @@ -9913,6 +9956,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -10194,15 +10238,6 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/cross-fetch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", - "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", - "dev": true, - "dependencies": { - "node-fetch": "^2.6.12" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -10233,9 +10268,9 @@ "dev": true }, "node_modules/data-uri-to-buffer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.1.tgz", - "integrity": "sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", "dev": true, "engines": { "node": ">= 14" @@ -10422,6 +10457,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, "engines": { "node": ">=0.4.0" } @@ -10511,9 +10547,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1147663", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1147663.tgz", - "integrity": "sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==", + "version": "0.0.1262051", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1262051.tgz", + "integrity": "sha512-YJe4CT5SA8on3Spa+UDtNhEqtuV6Epwz3OZ4HQVLhlRccpZ9/PAYk0/cy/oKxFKRrZPBUPyxympQci4yWNWZ9g==", "dev": true }, "node_modules/diff": { @@ -12235,25 +12271,6 @@ "node": ">=0.4.0" } }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -12295,6 +12312,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -12545,52 +12563,20 @@ } }, "node_modules/get-uri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.2.tgz", - "integrity": "sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", "dev": true, "dependencies": { "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.0", + "data-uri-to-buffer": "^6.0.2", "debug": "^4.3.4", - "fs-extra": "^8.1.0" + "fs-extra": "^11.2.0" }, "engines": { "node": ">= 14" } }, - "node_modules/get-uri/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/get-uri/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/get-uri/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/giget": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.1.tgz", @@ -12955,9 +12941,9 @@ } }, "node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "dependencies": { "agent-base": "^7.1.0", @@ -12968,9 +12954,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, "dependencies": { "agent-base": "^7.0.2", @@ -13205,6 +13191,25 @@ "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", "dev": true }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -14153,6 +14158,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, "node_modules/jscodeshift": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz", @@ -15774,6 +15785,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -15782,6 +15794,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -15863,9 +15876,9 @@ "dev": true }, "node_modules/mitt": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", - "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", "dev": true }, "node_modules/mkdirp": { @@ -16569,14 +16582,6 @@ "openapi": "bin/index.js" } }, - "node_modules/opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "bin": { - "opener": "bin/opener-bin.js" - } - }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -16758,25 +16763,18 @@ } }, "node_modules/pac-resolver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", - "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", "dev": true, "dependencies": { "degenerator": "^5.0.0", - "ip": "^1.1.8", "netmask": "^2.0.2" }, "engines": { "node": ">= 14" } }, - "node_modules/pac-resolver/node_modules/ip": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", - "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", - "dev": true - }, "node_modules/pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", @@ -17243,19 +17241,19 @@ } }, "node_modules/proxy-agent": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.0.tgz", - "integrity": "sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", "dev": true, "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.0", + "pac-proxy-agent": "^7.0.1", "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.1" + "socks-proxy-agent": "^8.0.2" }, "engines": { "node": ">= 14" @@ -17317,49 +17315,19 @@ } }, "node_modules/puppeteer-core": { - "version": "20.9.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.9.0.tgz", - "integrity": "sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==", + "version": "22.6.3", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.6.3.tgz", + "integrity": "sha512-YrTAak5zCTWVTnVaCK1b7FD1qFCCT9bSvQhLzamnIsJ57/tfuXiT8ZvPJR2SBfahyFTYFCcaZAd/Npow3lmDGA==", "dev": true, "dependencies": { - "@puppeteer/browsers": "1.4.6", - "chromium-bidi": "0.4.16", - "cross-fetch": "4.0.0", + "@puppeteer/browsers": "2.2.1", + "chromium-bidi": "0.5.16", "debug": "4.3.4", - "devtools-protocol": "0.0.1147663", - "ws": "8.13.0" + "devtools-protocol": "0.0.1262051", + "ws": "8.16.0" }, "engines": { - "node": ">=16.3.0" - }, - "peerDependencies": { - "typescript": ">= 4.7.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "node": ">=18" } }, "node_modules/qs": { @@ -18072,9 +18040,9 @@ } }, "node_modules/rollup": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", - "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.1.tgz", + "integrity": "sha512-4LnHSdd3QK2pa1J6dFbfm1HN0D7vSK/ZuZTsdyUAlA6Rr1yTouUTL13HaDOGJVgby461AhrNGBS7sCGXXtT+SA==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -18087,19 +18055,21 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.12.0", - "@rollup/rollup-android-arm64": "4.12.0", - "@rollup/rollup-darwin-arm64": "4.12.0", - "@rollup/rollup-darwin-x64": "4.12.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.12.0", - "@rollup/rollup-linux-arm64-gnu": "4.12.0", - "@rollup/rollup-linux-arm64-musl": "4.12.0", - "@rollup/rollup-linux-riscv64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-musl": "4.12.0", - "@rollup/rollup-win32-arm64-msvc": "4.12.0", - "@rollup/rollup-win32-ia32-msvc": "4.12.0", - "@rollup/rollup-win32-x64-msvc": "4.12.0", + "@rollup/rollup-android-arm-eabi": "4.14.1", + "@rollup/rollup-android-arm64": "4.14.1", + "@rollup/rollup-darwin-arm64": "4.14.1", + "@rollup/rollup-darwin-x64": "4.14.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.14.1", + "@rollup/rollup-linux-arm64-gnu": "4.14.1", + "@rollup/rollup-linux-arm64-musl": "4.14.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.14.1", + "@rollup/rollup-linux-riscv64-gnu": "4.14.1", + "@rollup/rollup-linux-s390x-gnu": "4.14.1", + "@rollup/rollup-linux-x64-gnu": "4.14.1", + "@rollup/rollup-linux-x64-musl": "4.14.1", + "@rollup/rollup-win32-arm64-msvc": "4.14.1", + "@rollup/rollup-win32-ia32-msvc": "4.14.1", + "@rollup/rollup-win32-x64-msvc": "4.14.1", "fsevents": "~2.3.2" } }, @@ -18129,9 +18099,9 @@ "dev": true }, "node_modules/rollup-plugin-import-css": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-import-css/-/rollup-plugin-import-css-3.4.0.tgz", - "integrity": "sha512-997dJi7M7yYFn7tZer/UVt72mh4GH/hHBv48j3V4jsGSg+1DdYUXn+QB9SMMCNKF99pSv6QXmIOLTyeuijIsgg==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-import-css/-/rollup-plugin-import-css-3.5.0.tgz", + "integrity": "sha512-JOVow6n00qt2C/NnsqPmIjFOfxIAudwWqC5SaC84CodMGiMFaP1gPAdgnJ8g8hcG+P85TCYp2kI98grYCEt5pg==", "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.4" @@ -18487,6 +18457,19 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/simple-icons": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/simple-icons/-/simple-icons-11.11.0.tgz", + "integrity": "sha512-jF4FvxqJ5LGRgScMy6IWHYBuKG7SImwzsTDKHhmAB2RQVKEqvGWI8qmAHWYPKEGM8/oRA/VvKTVIbWdg7YPRsg==", + "dev": true, + "engines": { + "node": ">=0.12.18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/simple-icons" + } + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -18545,26 +18528,26 @@ } }, "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", + "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", "dev": true, "dependencies": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, "node_modules/socks-proxy-agent": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", - "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", "dev": true, "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.1", "debug": "^4.3.4", "socks": "^2.7.1" }, @@ -18705,13 +18688,16 @@ "dev": true }, "node_modules/streamx": { - "version": "2.15.7", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.7.tgz", - "integrity": "sha512-NPEKS5+yjyo597eafGbKW5ujh7Sm6lDLHZQd/lRSz6S0VarpADBJItqfB4PnwpS+472oob1GX5cCY9vzfJpHUA==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", "dev": true, "dependencies": { "fast-fifo": "^1.1.0", "queue-tick": "^1.0.1" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" } }, "node_modules/strict-event-emitter": { @@ -18986,14 +18972,17 @@ } }, "node_modules/tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", + "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", "dev": true, "dependencies": { - "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0" } }, "node_modules/tar-stream": { @@ -20066,6 +20055,12 @@ "punycode": "^2.1.0" } }, + "node_modules/urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", + "dev": true + }, "node_modules/use-callback-ref": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.1.tgz", @@ -21119,6 +21114,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index a14941064b..8dc7c5c510 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -34,6 +34,7 @@ "./document-type": "./dist-cms/packages/documents/document-types/index.js", "./document": "./dist-cms/packages/documents/documents/index.js", "./dynamic-root": "./dist-cms/packages/dynamic-root/index.js", + "./entity": "./dist-cms/packages/core/entity/index.js", "./entity-action": "./dist-cms/packages/core/entity-action/index.js", "./entity-bulk-action": "./dist-cms/packages/core/entity-bulk-action/index.js", "./event": "./dist-cms/packages/core/event/index.js", @@ -89,6 +90,7 @@ "./webhook": "./dist-cms/packages/webhook/index.js", "./workspace": "./dist-cms/packages/core/workspace/index.js", "./external/backend-api": "./dist-cms/external/backend-api/index.js", + "./external/base64-js": "./dist-cms/external/base64-js/index.js", "./external/dompurify": "./dist-cms/external/dompurify/index.js", "./external/lit": "./dist-cms/external/lit/index.js", "./external/marked": "./dist-cms/external/marked/index.js", @@ -118,7 +120,6 @@ "url": "https://umbraco.com" }, "scripts": { - "auth:test:e2e": "npx playwright test --config apps/auth/", "backoffice:test:e2e": "npx playwright test", "build-storybook": "npm run wc-analyze && storybook build", "build:for:cms": "npm run build && node ./devops/build/copy-to-cms.js", @@ -147,7 +148,7 @@ "preview": "vite preview --open", "storybook:build": "npm run wc-analyze && storybook build", "storybook": "npm run wc-analyze && storybook dev -p 6006", - "test:e2e": "npm run auth:test:e2e && npm run backoffice:test:e2e", + "test:e2e": "npm run backoffice:test:e2e", "test:dev": "web-test-runner --config ./web-test-runner.dev.config.mjs", "test:dev-watch": "web-test-runner --watch --config ./web-test-runner.dev.config.mjs", "test:watch": "web-test-runner --watch", @@ -164,11 +165,11 @@ "npm": ">=10.1 < 11" }, "dependencies": { - "@openid/appauth": "^1.3.1", "@types/dompurify": "^3.0.5", "@types/uuid": "^9.0.8", "@umbraco-ui/uui": "1.7.2", "@umbraco-ui/uui-css": "1.7.2", + "base64-js": "^1.5.1", "dompurify": "^3.0.9", "element-internals-polyfill": "^1.3.10", "lit": "^3.1.2", @@ -199,10 +200,10 @@ "@types/mocha": "^10.0.1", "@typescript-eslint/eslint-plugin": "^6.14.0", "@typescript-eslint/parser": "^7.1.0", - "@web/dev-server-esbuild": "^1.0.1", + "@web/dev-server-esbuild": "^1.0.2", "@web/dev-server-import-maps": "^0.2.0", "@web/dev-server-rollup": "^0.6.1", - "@web/test-runner": "^0.18.0", + "@web/test-runner": "^0.18.1", "@web/test-runner-playwright": "^0.11.0", "babel-loader": "^9.1.3", "eslint": "^8.56.0", @@ -223,10 +224,11 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "remark-gfm": "^3.0.1", - "rollup": "^4.12.0", - "rollup-plugin-esbuild": "^6.1.0", - "rollup-plugin-import-css": "^3.4.0", + "rollup": "^4.14.1", + "rollup-plugin-esbuild": "^6.1.1", + "rollup-plugin-import-css": "^3.5.0", "rollup-plugin-web-worker-loader": "^1.6.1", + "simple-icons": "^11.11.0", "storybook": "^7.6.17", "tiny-glob": "^0.2.9", "tsc-alias": "^1.8.8", diff --git a/src/Umbraco.Web.UI.Client/public/umbraco_logo_white.svg b/src/Umbraco.Web.UI.Client/public/umbraco_logo_white.svg deleted file mode 100644 index 3de8e82ed3..0000000000 --- a/src/Umbraco.Web.UI.Client/public/umbraco_logo_white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/apps/app/app-auth.controller.ts b/src/Umbraco.Web.UI.Client/src/apps/app/app-auth.controller.ts new file mode 100644 index 0000000000..2e3bb77d9b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/apps/app/app-auth.controller.ts @@ -0,0 +1,171 @@ +import { + UMB_AUTH_CONTEXT, + UMB_MODAL_APP_AUTH, + UMB_STORAGE_REDIRECT_URL, + type UmbUserLoginState, +} from '@umbraco-cms/backoffice/auth'; +import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { filter, firstValueFrom, skip } from '@umbraco-cms/backoffice/external/rxjs'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; +import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; +import type { ManifestAuthProvider } from '@umbraco-cms/backoffice/extension-registry'; + +export class UmbAppAuthController extends UmbControllerBase { + #authContext?: typeof UMB_AUTH_CONTEXT.TYPE; + #firstTimeLoggingIn = true; + + constructor(host: UmbControllerHost) { + super(host); + + this.consumeContext(UMB_AUTH_CONTEXT, (context) => { + this.#authContext = context; + + // Observe the user's authorization state and start the authorization flow if the user is not authorized + this.observe( + context.isAuthorized.pipe( + // Skip the first since it is always false + skip(1), + // Only continue if the value is false + filter((x) => !x), + ), + () => { + this.#firstTimeLoggingIn = false; + this.makeAuthorizationRequest('timedOut'); + }, + '_authState', + ); + }); + } + + /** + * Checks if the user is authorized. + * If not, the authorization flow is started. + */ + async isAuthorized(): Promise { + if (!this.#authContext) { + throw new Error('[Fatal] Auth context is not available'); + } + + const isAuthorized = this.#authContext.getIsAuthorized(); + + if (isAuthorized) { + return true; + } + + // Make a request to the auth server to start the auth flow + return this.makeAuthorizationRequest(); + } + + /** + * Starts the authorization flow. + * It will check which providers are available and either redirect directly to the provider or show a provider selection screen. + */ + async makeAuthorizationRequest(userLoginState: UmbUserLoginState = 'loggingIn'): Promise { + if (!this.#authContext) { + throw new Error('[Fatal] Auth context is not available'); + } + + // Save location.href so we can redirect to it after login + if (location.href !== this.#authContext.getPostLogoutRedirectUrl()) { + window.sessionStorage.setItem(UMB_STORAGE_REDIRECT_URL, location.href); + } + + // Figure out which providers are available + const availableProviders = await firstValueFrom(this.#authContext.getAuthProviders()); + + // If the user is timed out, we can show the login modal directly + if (userLoginState === 'timedOut') { + const selected = await this.#showLoginModal(userLoginState, availableProviders); + + if (!selected) { + return false; + } + + return this.#updateState(); + } + + if (availableProviders.length === 0) { + throw new Error('[Fatal] No auth providers available'); + } + + if (availableProviders.length === 1) { + // One provider available (most likely the Umbraco provider), so initiate the authorization request to the default provider + this.#authContext.makeAuthorizationRequest(availableProviders[0].forProviderName); + return this.#updateState(); + } + + // Check if any provider is redirecting directly to the provider + const redirectProvider = + userLoginState === 'loggingIn' + ? availableProviders.find((provider) => provider.meta?.behavior?.autoRedirect) + : undefined; + + if (redirectProvider) { + // Redirect directly to the provider + this.#authContext.makeAuthorizationRequest(redirectProvider.forProviderName); + return this.#updateState(); + } + + // Show the provider selection screen + const selected = await this.#showLoginModal(userLoginState, availableProviders); + + if (!selected) { + return false; + } + + return this.#updateState(); + } + + async #showLoginModal( + userLoginState: UmbUserLoginState, + availableProviders: Array, + ): Promise { + if (!this.#authContext) { + throw new Error('[Fatal] Auth context is not available'); + } + + // Check if any provider denies local login + const denyLocalLogin = availableProviders.some((provider) => provider.meta?.behavior?.denyLocalLogin); + if (denyLocalLogin) { + // Unregister the Umbraco provider + umbExtensionsRegistry.unregister('Umb.AuthProviders.Umbraco'); + } + + // Show the provider selection screen + const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); + const selected = await modalManager + .open(this._host, UMB_MODAL_APP_AUTH, { + data: { + userLoginState, + }, + modal: { + backdropBackground: this.#firstTimeLoggingIn + ? 'var(--umb-auth-backdrop, url("/umbraco/backoffice/assets/umbraco_logo_white.svg") 20px 20px / 200px no-repeat, radial-gradient(circle, rgba(2,0,36,1) 0%, rgba(40,58,151,.9) 50%, rgba(0,212,255,1) 100%))' + : 'var(--umb-auth-backdrop-timedout, rgba(0,0,0,0.75))', + }, + }) + .onSubmit() + .catch(() => undefined); + + if (!selected?.providerName) { + return false; + } + + this.#authContext.makeAuthorizationRequest(selected.providerName, selected.loginHint); + + return true; + } + + #updateState() { + if (!this.#authContext) { + throw new Error('[Fatal] Auth context is not available'); + } + + // Reinitialize the auth flow (load the state from local storage) + this.#authContext.setInitialState(); + + // The authorization flow is finished, so let the caller know if the user is authorized + return this.#authContext.getIsAuthorized(); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/apps/app/app.element.ts b/src/Umbraco.Web.UI.Client/src/apps/app/app.element.ts index d104ccab6c..de8c4ee346 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/app/app.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/app/app.element.ts @@ -1,8 +1,10 @@ +import { onInit } from '../../packages/core/entry-point.js'; import type { UmbAppErrorElement } from './app-error.element.js'; import { UmbAppContext } from './app.context.js'; import { UmbServerConnection } from './server-connection.js'; +import { UmbAppAuthController } from './app-auth.controller.js'; import type { UMB_AUTH_CONTEXT } from '@umbraco-cms/backoffice/auth'; -import { UMB_STORAGE_REDIRECT_URL, UmbAuthContext } from '@umbraco-cms/backoffice/auth'; +import { UmbAuthContext } from '@umbraco-cms/backoffice/auth'; import { css, html, customElement, property } from '@umbraco-cms/backoffice/external/lit'; import { UUIIconRegistryEssential } from '@umbraco-cms/backoffice/external/uui'; import { UmbIconRegistry } from '@umbraco-cms/backoffice/icon'; @@ -11,6 +13,8 @@ import type { Guard, UmbRoute } from '@umbraco-cms/backoffice/router'; import { pathWithoutBasePath } from '@umbraco-cms/backoffice/router'; import { OpenAPI, RuntimeLevelModel } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbContextDebugController } from '@umbraco-cms/backoffice/debug'; +import { UmbServerExtensionRegistrator } from '@umbraco-cms/backoffice/extension-api'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; @customElement('umb-app') export class UmbAppElement extends UmbLitElement { @@ -21,7 +25,12 @@ export class UmbAppElement extends UmbLitElement { * @remarks This is the base URL of the Umbraco server, not the base URL of the backoffice. */ @property({ type: String }) - serverUrl = window.location.origin; + set serverUrl(url: string) { + OpenAPI.BASE = url; + } + get serverUrl() { + return OpenAPI.BASE; + } /** * The base path of the backoffice. @@ -29,7 +38,6 @@ export class UmbAppElement extends UmbLitElement { * @attr */ @property({ type: String }) - // TODO: get from base element or maybe move to UmbAuthContext.#getRedirectUrl since it is only used there backofficePath = '/umbraco'; /** @@ -48,6 +56,13 @@ export class UmbAppElement extends UmbLitElement { component: () => import('../upgrader/upgrader.element.js'), guards: [this.#isAuthorizedGuard()], }, + { + path: 'logout', + resolve: () => { + this.#authContext?.clearTokenStorage(); + this.#authController.makeAuthorizationRequest('loggedOut'); + }, + }, { path: '**', component: () => import('../backoffice/backoffice.element.js'), @@ -56,17 +71,18 @@ export class UmbAppElement extends UmbLitElement { ]; #authContext?: typeof UMB_AUTH_CONTEXT.TYPE; - #umbIconRegistry = new UmbIconRegistry(); - #uuiIconRegistry = new UUIIconRegistryEssential(); #serverConnection?: UmbServerConnection; + #authController = new UmbAppAuthController(this); constructor() { super(); - new UmbContextDebugController(this); + OpenAPI.BASE = window.location.origin; - this.#umbIconRegistry.attach(this); - this.#uuiIconRegistry.attach(this); + new UmbIconRegistry().attach(this); + new UUIIconRegistryEssential().attach(this); + + new UmbContextDebugController(this); } connectedCallback(): void { @@ -75,19 +91,17 @@ export class UmbAppElement extends UmbLitElement { } async #setup() { - if (this.serverUrl === undefined) throw new Error('No serverUrl provided'); - - /* All requests to the server requires the base URL to be set. - We make sure it happens before we get the server status. - TODO: find the right place to set this - */ - OpenAPI.BASE = this.serverUrl; - this.#serverConnection = await new UmbServerConnection(this.serverUrl).connect(); this.#authContext = new UmbAuthContext(this, this.serverUrl, this.backofficePath, this.bypassAuth); new UmbAppContext(this, { backofficePath: this.backofficePath, serverUrl: this.serverUrl }); + // Register Core extensions (this is specifically done here because we need these extensions to be registered before the application is initialized) + onInit(this, umbExtensionsRegistry); + + // Register public extensions + await new UmbServerExtensionRegistrator(this, umbExtensionsRegistry).registerPublicExtensions(); + // Try to initialise the auth flow and get the runtime status try { // If the runtime level is "install" we should clear any cached tokens @@ -136,7 +150,6 @@ export class UmbAppElement extends UmbLitElement { // Instruct all requests to use the auth flow to get and use the access_token for all subsequent requests OpenAPI.TOKEN = () => this.#authContext!.getLatestToken(); OpenAPI.WITH_CREDENTIALS = true; - OpenAPI.CREDENTIALS = 'include'; } #redirect() { @@ -184,24 +197,7 @@ export class UmbAppElement extends UmbLitElement { } #isAuthorizedGuard(): Guard { - return () => { - if (!this.#authContext) { - throw new Error('[Fatal] AuthContext requested before it was initialized'); - } - - if (this.#authContext.getIsAuthorized()) { - return true; - } - - // Save location.href so we can redirect to it after login - window.sessionStorage.setItem(UMB_STORAGE_REDIRECT_URL, location.href); - - // Make a request to the auth server to start the auth flow - this.#authContext.makeAuthorizationRequest(); - - // Return false to prevent the route from being rendered - return false; - }; + return () => this.#authController.isAuthorized() ?? false; } #errorPage(errorMsg: string, error?: unknown) { diff --git a/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts b/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts index 4d77370af7..672117fa16 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts @@ -14,7 +14,6 @@ import './components/index.js'; const CORE_PACKAGES = [ import('../../packages/audit-log/umbraco-package.js'), import('../../packages/block/umbraco-package.js'), - import('../../packages/core/umbraco-package.js'), import('../../packages/data-type/umbraco-package.js'), import('../../packages/dictionary/umbraco-package.js'), import('../../packages/documents/umbraco-package.js'), @@ -45,7 +44,6 @@ export class UmbBackofficeElement extends UmbLitElement { /** * Backoffice extension registry. * This enables to register and unregister extensions via DevTools, or just via querying this element via the DOM. - * @type {UmbExtensionsRegistry} */ public extensionRegistry = umbExtensionsRegistry; @@ -53,9 +51,11 @@ export class UmbBackofficeElement extends UmbLitElement { super(); new UmbBackofficeContext(this); + new UmbBundleExtensionInitializer(this, umbExtensionsRegistry); new UmbEntryPointExtensionInitializer(this, umbExtensionsRegistry); - new UmbServerExtensionRegistrator(this, umbExtensionsRegistry).registerAllExtensions(); + + new UmbServerExtensionRegistrator(this, umbExtensionsRegistry).registerPrivateExtensions(); // So far local packages are this simple to registerer, so no need for a manager to do that: CORE_PACKAGES.forEach(async (packageImport) => { diff --git a/src/Umbraco.Web.UI.Client/src/assets/installer.jpg b/src/Umbraco.Web.UI.Client/src/assets/installer.jpg deleted file mode 100644 index f0f5de8695..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/installer.jpg and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/da-dk.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/da-dk.ts index 0d96709dcf..cf53ada307 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/da-dk.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/da-dk.ts @@ -1013,6 +1013,18 @@ export default { lockoutWillOccur: 'Du har været inaktiv, og du vil blive logget ud om', renewSession: 'Forny for at gemme dine ændringer', }, + login: { + greeting0: 'Velkommen', + greeting1: 'Velkommen', + greeting2: 'Velkommen', + greeting3: 'Velkommen', + greeting4: 'Velkommen', + greeting5: 'Velkommen', + greeting6: 'Velkommen', + instruction: 'Log ind på Umbraco', + signInWith: 'Log ind med {0}', + timeout: 'Du er blevet logget ud på grund af inaktivitet, vil du logge ind igen?', + }, main: { dashboard: 'Skrivebord', sections: 'Sektioner', diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/en-us.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/en-us.ts index 40987bee26..00a3ebc3a2 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/en-us.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/en-us.ts @@ -1010,6 +1010,18 @@ export default { lockoutWillOccur: "You've been idle and logout will automatically occur in", renewSession: 'Renew now to save your work', }, + login: { + greeting0: 'Welcome', + greeting1: 'Welcome', + greeting2: 'Welcome', + greeting3: 'Welcome', + greeting4: 'Welcome', + greeting5: 'Welcome', + greeting6: 'Welcome', + instruction: 'Sign in to Umbraco', + signInWith: 'Sign in with {0}', + timeout: 'Your session has timed out. Please sign in again below.', + }, main: { dashboard: 'Dashboard', sections: 'Sections', diff --git a/src/Umbraco.Web.UI.Client/src/assets/umbraco_background.jpg b/src/Umbraco.Web.UI.Client/src/assets/umbraco_background.jpg deleted file mode 100644 index 412cd17865..0000000000 Binary files a/src/Umbraco.Web.UI.Client/src/assets/umbraco_background.jpg and /dev/null differ diff --git a/src/Umbraco.Web.UI.Client/src/assets/umbraco_logo_blue.svg b/src/Umbraco.Web.UI.Client/src/assets/umbraco_logo_blue.svg new file mode 100644 index 0000000000..578bf592f6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/assets/umbraco_logo_blue.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/Umbraco.Web.UI.Client/src/assets/umbraco_logo_white.svg b/src/Umbraco.Web.UI.Client/src/assets/umbraco_logo_white.svg index 3de8e82ed3..01f7260cd3 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/umbraco_logo_white.svg +++ b/src/Umbraco.Web.UI.Client/src/assets/umbraco_logo_white.svg @@ -1 +1,51 @@ - \ No newline at end of file + + + + + + + + + + + + + + + + + + + diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/request.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/request.ts index 051758e054..b018a07cae 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/request.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/core/request.ts @@ -232,21 +232,13 @@ export const getResponseBody = async (response: Response): Promise => { try { const contentType = response.headers.get('Content-Type'); if (contentType) { - - const binaryTypes = ['application/octet-stream', 'application/pdf', 'application/zip']; - const isBinary = binaryTypes.some(type => contentType.toLowerCase().startsWith(type)); - if (isBinary) { - return await response.blob(); - } - - const jsonTypes = ['application/json', 'application/problem+json'] - const isJSON = jsonTypes.some(type => contentType.toLowerCase().startsWith(type)); - if (isJSON) { - return await response.json(); - } - - return await response.text(); - + const jsonTypes = ['application/json', 'application/problem+json'] + const isJSON = jsonTypes.some(type => contentType.toLowerCase().startsWith(type)); + if (isJSON) { + return await response.json(); + } else { + return await response.text(); + } } } catch (error) { console.error(error); diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/index.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/index.ts index 2c78b0aa5e..42633b3570 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/index.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/index.ts @@ -7,15 +7,12 @@ export { CancelablePromise, CancelError } from './core/CancelablePromise'; export { OpenAPI } from './core/OpenAPI'; export type { OpenAPIConfig } from './core/OpenAPI'; -export type { AllowedContentTypeModel } from './models/AllowedContentTypeModel'; export type { AllowedDocumentTypeModel } from './models/AllowedDocumentTypeModel'; export type { AllowedMediaTypeModel } from './models/AllowedMediaTypeModel'; -export type { AuditLogBaseModel } from './models/AuditLogBaseModel'; export type { AuditLogEntityModel } from './models/AuditLogEntityModel'; export type { AuditLogResponseModel } from './models/AuditLogResponseModel'; export type { AuditLogWithUsernameResponseModel } from './models/AuditLogWithUsernameResponseModel'; export { AuditTypeModel } from './models/AuditTypeModel'; -export type { AvailableContentTypeCompositionResponseModelBaseModel } from './models/AvailableContentTypeCompositionResponseModelBaseModel'; export type { AvailableDocumentTypeCompositionResponseModel } from './models/AvailableDocumentTypeCompositionResponseModel'; export type { AvailableMediaTypeCompositionResponseModel } from './models/AvailableMediaTypeCompositionResponseModel'; export type { AvailableMemberTypeCompositionResponseModel } from './models/AvailableMemberTypeCompositionResponseModel'; @@ -23,31 +20,10 @@ export type { ChangePasswordCurrentUserRequestModel } from './models/ChangePassw export type { ChangePasswordUserRequestModel } from './models/ChangePasswordUserRequestModel'; export { CompositionTypeModel } from './models/CompositionTypeModel'; export type { ConsentLevelPresentationModel } from './models/ConsentLevelPresentationModel'; -export type { ContentCollectionResponseModelBaseDocumentValueModelDocumentVariantResponseModel } from './models/ContentCollectionResponseModelBaseDocumentValueModelDocumentVariantResponseModel'; -export type { ContentCollectionResponseModelBaseMediaValueModelMediaVariantResponseModel } from './models/ContentCollectionResponseModelBaseMediaValueModelMediaVariantResponseModel'; -export type { ContentForDocumentResponseModel } from './models/ContentForDocumentResponseModel'; -export type { ContentForMediaResponseModel } from './models/ContentForMediaResponseModel'; -export type { ContentForMemberResponseModel } from './models/ContentForMemberResponseModel'; -export type { ContentTreeItemResponseModel } from './models/ContentTreeItemResponseModel'; -export type { ContentTypeCleanupBaseModel } from './models/ContentTypeCleanupBaseModel'; -export type { ContentTypeCollectionReferenceResponseModelBaseModel } from './models/ContentTypeCollectionReferenceResponseModelBaseModel'; -export type { ContentTypeCompositionRequestModelBaseModel } from './models/ContentTypeCompositionRequestModelBaseModel'; -export type { ContentTypeCompositionResponseModelBaseModel } from './models/ContentTypeCompositionResponseModelBaseModel'; -export type { ContentTypeForDocumentTypeResponseModel } from './models/ContentTypeForDocumentTypeResponseModel'; -export type { ContentTypeForMediaTypeResponseModel } from './models/ContentTypeForMediaTypeResponseModel'; -export type { ContentTypeForMemberTypeResponseModel } from './models/ContentTypeForMemberTypeResponseModel'; -export type { ContentTypeReferenceResponseModelBaseModel } from './models/ContentTypeReferenceResponseModelBaseModel'; -export type { ContentUrlInfoBaseModel } from './models/ContentUrlInfoBaseModel'; export type { CopyDataTypeRequestModel } from './models/CopyDataTypeRequestModel'; export type { CopyDocumentRequestModel } from './models/CopyDocumentRequestModel'; export type { CopyDocumentTypeRequestModel } from './models/CopyDocumentTypeRequestModel'; export type { CopyMediaTypeRequestModel } from './models/CopyMediaTypeRequestModel'; -export type { CreateContentForDocumentRequestModel } from './models/CreateContentForDocumentRequestModel'; -export type { CreateContentForMediaRequestModel } from './models/CreateContentForMediaRequestModel'; -export type { CreateContentForMemberRequestModel } from './models/CreateContentForMemberRequestModel'; -export type { CreateContentTypeForDocumentTypeRequestModel } from './models/CreateContentTypeForDocumentTypeRequestModel'; -export type { CreateContentTypeForMediaTypeRequestModel } from './models/CreateContentTypeForMediaTypeRequestModel'; -export type { CreateContentTypeForMemberTypeRequestModel } from './models/CreateContentTypeForMemberTypeRequestModel'; export type { CreateDataTypeRequestModel } from './models/CreateDataTypeRequestModel'; export type { CreateDictionaryItemRequestModel } from './models/CreateDictionaryItemRequestModel'; export type { CreateDocumentBlueprintFromDocumentRequestModel } from './models/CreateDocumentBlueprintFromDocumentRequestModel'; @@ -83,13 +59,11 @@ export type { CultureAndScheduleRequestModel } from './models/CultureAndSchedule export type { CultureReponseModel } from './models/CultureReponseModel'; export type { CurrentUserResponseModel } from './models/CurrentUserResponseModel'; export type { CurrenUserConfigurationResponseModel } from './models/CurrenUserConfigurationResponseModel'; -export type { DatabaseInstallPresentationModel } from './models/DatabaseInstallPresentationModel'; export type { DatabaseInstallRequestModel } from './models/DatabaseInstallRequestModel'; export type { DatabaseSettingsPresentationModel } from './models/DatabaseSettingsPresentationModel'; export { DataTypeChangeModeModel } from './models/DataTypeChangeModeModel'; export type { DatatypeConfigurationResponseModel } from './models/DatatypeConfigurationResponseModel'; export type { DataTypeItemResponseModel } from './models/DataTypeItemResponseModel'; -export type { DataTypeModelBaseModel } from './models/DataTypeModelBaseModel'; export type { DataTypePropertyPresentationModel } from './models/DataTypePropertyPresentationModel'; export type { DataTypePropertyReferenceModel } from './models/DataTypePropertyReferenceModel'; export type { DataTypeReferenceResponseModel } from './models/DataTypeReferenceResponseModel'; @@ -99,7 +73,6 @@ export type { DefaultReferenceResponseModel } from './models/DefaultReferenceRes export type { DeleteUserGroupsRequestModel } from './models/DeleteUserGroupsRequestModel'; export type { DeleteUsersRequestModel } from './models/DeleteUsersRequestModel'; export type { DictionaryItemItemResponseModel } from './models/DictionaryItemItemResponseModel'; -export type { DictionaryItemModelBaseModel } from './models/DictionaryItemModelBaseModel'; export type { DictionaryItemResponseModel } from './models/DictionaryItemResponseModel'; export type { DictionaryItemTranslationModel } from './models/DictionaryItemTranslationModel'; export type { DictionaryOverviewResponseModel } from './models/DictionaryOverviewResponseModel'; @@ -139,7 +112,6 @@ export { DocumentVariantStateModel } from './models/DocumentVariantStateModel'; export type { DocumentVersionItemResponseModel } from './models/DocumentVersionItemResponseModel'; export type { DocumentVersionResponseModel } from './models/DocumentVersionResponseModel'; export type { DomainPresentationModel } from './models/DomainPresentationModel'; -export type { DomainsPresentationModelBaseModel } from './models/DomainsPresentationModelBaseModel'; export type { DomainsResponseModel } from './models/DomainsResponseModel'; export type { DynamicRootContextRequestModel } from './models/DynamicRootContextRequestModel'; export type { DynamicRootQueryOriginRequestModel } from './models/DynamicRootQueryOriginRequestModel'; @@ -149,29 +121,16 @@ export type { DynamicRootRequestModel } from './models/DynamicRootRequestModel'; export type { DynamicRootResponseModel } from './models/DynamicRootResponseModel'; export type { EnableTwoFactorRequestModel } from './models/EnableTwoFactorRequestModel'; export type { EnableUserRequestModel } from './models/EnableUserRequestModel'; -export type { EntityTreeItemResponseModel } from './models/EntityTreeItemResponseModel'; export { EventMessageTypeModel } from './models/EventMessageTypeModel'; export type { FieldPresentationModel } from './models/FieldPresentationModel'; -export type { FileSystemCreateRequestModelBaseModel } from './models/FileSystemCreateRequestModelBaseModel'; -export type { FileSystemFileCreateRequestModelBaseModel } from './models/FileSystemFileCreateRequestModelBaseModel'; -export type { FileSystemFileResponseModelBaseModel } from './models/FileSystemFileResponseModelBaseModel'; -export type { FileSystemFileUpdateRequestModelBaseModel } from './models/FileSystemFileUpdateRequestModelBaseModel'; export type { FileSystemFolderModel } from './models/FileSystemFolderModel'; -export type { FileSystemItemResponseModelBaseModel } from './models/FileSystemItemResponseModelBaseModel'; -export type { FileSystemItemViewModelBaseModel } from './models/FileSystemItemViewModelBaseModel'; -export type { FileSystemRenameRequestModelBaseModel } from './models/FileSystemRenameRequestModelBaseModel'; -export type { FileSystemResponseModelBaseModel } from './models/FileSystemResponseModelBaseModel'; export type { FileSystemTreeItemPresentationModel } from './models/FileSystemTreeItemPresentationModel'; -export type { FolderModelBaseModel } from './models/FolderModelBaseModel'; export type { FolderResponseModel } from './models/FolderResponseModel'; -export type { FolderTreeItemResponseModel } from './models/FolderTreeItemResponseModel'; export type { HealthCheckActionRequestModel } from './models/HealthCheckActionRequestModel'; -export type { HealthCheckGroupPresentationBaseModel } from './models/HealthCheckGroupPresentationBaseModel'; export type { HealthCheckGroupPresentationModel } from './models/HealthCheckGroupPresentationModel'; export type { HealthCheckGroupResponseModel } from './models/HealthCheckGroupResponseModel'; export type { HealthCheckGroupWithResultResponseModel } from './models/HealthCheckGroupWithResultResponseModel'; export type { HealthCheckModel } from './models/HealthCheckModel'; -export type { HealthCheckModelBaseModel } from './models/HealthCheckModelBaseModel'; export type { HealthCheckResultResponseModel } from './models/HealthCheckResultResponseModel'; export type { HealthCheckWithResultPresentationModel } from './models/HealthCheckWithResultPresentationModel'; export { HealthStatusModel } from './models/HealthStatusModel'; @@ -182,10 +141,8 @@ export type { InstallRequestModel } from './models/InstallRequestModel'; export type { InstallSettingsResponseModel } from './models/InstallSettingsResponseModel'; export type { InviteUserRequestModel } from './models/InviteUserRequestModel'; export type { ItemReferenceByIdResponseModel } from './models/ItemReferenceByIdResponseModel'; -export type { ItemResponseModelBaseModel } from './models/ItemResponseModelBaseModel'; export type { ItemSortingRequestModel } from './models/ItemSortingRequestModel'; export type { LanguageItemResponseModel } from './models/LanguageItemResponseModel'; -export type { LanguageModelBaseModel } from './models/LanguageModelBaseModel'; export type { LanguageResponseModel } from './models/LanguageResponseModel'; export type { LinkedLoginModel } from './models/LinkedLoginModel'; export type { LinkedLoginsRequestModel } from './models/LinkedLoginsRequestModel'; @@ -195,6 +152,7 @@ export { LogLevelModel } from './models/LogLevelModel'; export type { LogMessagePropertyPresentationModel } from './models/LogMessagePropertyPresentationModel'; export type { LogMessageResponseModel } from './models/LogMessageResponseModel'; export type { LogTemplateResponseModel } from './models/LogTemplateResponseModel'; +export type { ManifestResponseModel } from './models/ManifestResponseModel'; export type { MediaCollectionResponseModel } from './models/MediaCollectionResponseModel'; export type { MediaConfigurationResponseModel } from './models/MediaConfigurationResponseModel'; export type { MediaItemResponseModel } from './models/MediaItemResponseModel'; @@ -219,7 +177,6 @@ export type { MediaVariantRequestModel } from './models/MediaVariantRequestModel export type { MediaVariantResponseModel } from './models/MediaVariantResponseModel'; export type { MemberConfigurationResponseModel } from './models/MemberConfigurationResponseModel'; export type { MemberGroupItemResponseModel } from './models/MemberGroupItemResponseModel'; -export type { MemberGroupPresentationBaseModel } from './models/MemberGroupPresentationBaseModel'; export type { MemberGroupResponseModel } from './models/MemberGroupResponseModel'; export type { MemberItemResponseModel } from './models/MemberItemResponseModel'; export type { MemberResponseModel } from './models/MemberResponseModel'; @@ -228,7 +185,6 @@ export type { MemberTypeCompositionRequestModel } from './models/MemberTypeCompo export type { MemberTypeCompositionResponseModel } from './models/MemberTypeCompositionResponseModel'; export type { MemberTypeItemResponseModel } from './models/MemberTypeItemResponseModel'; export type { MemberTypePropertyTypeContainerResponseModel } from './models/MemberTypePropertyTypeContainerResponseModel'; -export type { MemberTypePropertyTypeModelBaseModel } from './models/MemberTypePropertyTypeModelBaseModel'; export type { MemberTypePropertyTypeResponseModel } from './models/MemberTypePropertyTypeResponseModel'; export type { MemberTypePropertyTypeVisibilityModel } from './models/MemberTypePropertyTypeVisibilityModel'; export type { MemberTypeReferenceResponseModel } from './models/MemberTypeReferenceResponseModel'; @@ -240,24 +196,21 @@ export type { ModelsBuilderResponseModel } from './models/ModelsBuilderResponseM export { ModelsModeModel } from './models/ModelsModeModel'; export type { MoveDataTypeRequestModel } from './models/MoveDataTypeRequestModel'; export type { MoveDictionaryRequestModel } from './models/MoveDictionaryRequestModel'; +export type { MoveDocumentBlueprintRequestModel } from './models/MoveDocumentBlueprintRequestModel'; export type { MoveDocumentRequestModel } from './models/MoveDocumentRequestModel'; export type { MoveDocumentTypeRequestModel } from './models/MoveDocumentTypeRequestModel'; export type { MoveMediaRequestModel } from './models/MoveMediaRequestModel'; export type { MoveMediaTypeRequestModel } from './models/MoveMediaTypeRequestModel'; export type { NamedEntityTreeItemResponseModel } from './models/NamedEntityTreeItemResponseModel'; -export type { NamedItemResponseModelBaseModel } from './models/NamedItemResponseModelBaseModel'; export type { NoopSetupTwoFactorModel } from './models/NoopSetupTwoFactorModel'; export type { NotificationHeaderModel } from './models/NotificationHeaderModel'; export type { ObjectTypeResponseModel } from './models/ObjectTypeResponseModel'; -export type { OkResult } from './models/OkResult'; export { OperatorModel } from './models/OperatorModel'; export type { OutOfDateStatusResponseModel } from './models/OutOfDateStatusResponseModel'; export { OutOfDateTypeModel } from './models/OutOfDateTypeModel'; export type { PackageConfigurationResponseModel } from './models/PackageConfigurationResponseModel'; export type { PackageDefinitionResponseModel } from './models/PackageDefinitionResponseModel'; -export type { PackageManifestResponseModel } from './models/PackageManifestResponseModel'; export type { PackageMigrationStatusResponseModel } from './models/PackageMigrationStatusResponseModel'; -export type { PackageModelBaseModel } from './models/PackageModelBaseModel'; export type { PagedAllowedDocumentTypeModel } from './models/PagedAllowedDocumentTypeModel'; export type { PagedAllowedMediaTypeModel } from './models/PagedAllowedMediaTypeModel'; export type { PagedAuditLogResponseModel } from './models/PagedAuditLogResponseModel'; @@ -324,25 +277,18 @@ export type { ProblemDetailsBuilderModel } from './models/ProblemDetailsBuilderM export type { ProfilingStatusRequestModel } from './models/ProfilingStatusRequestModel'; export type { ProfilingStatusResponseModel } from './models/ProfilingStatusResponseModel'; export type { PropertyTypeAppearanceModel } from './models/PropertyTypeAppearanceModel'; -export type { PropertyTypeContainerModelBaseModel } from './models/PropertyTypeContainerModelBaseModel'; -export type { PropertyTypeModelBaseModel } from './models/PropertyTypeModelBaseModel'; export type { PropertyTypeValidationModel } from './models/PropertyTypeValidationModel'; -export type { PublicAccessBaseModel } from './models/PublicAccessBaseModel'; export type { PublicAccessRequestModel } from './models/PublicAccessRequestModel'; -export type { PublicAccessResponseModel } from './models/PublicAccessResponseModel'; export type { PublishDocumentRequestModel } from './models/PublishDocumentRequestModel'; export type { PublishDocumentWithDescendantsRequestModel } from './models/PublishDocumentWithDescendantsRequestModel'; -export type { RecycleBinItemResponseModelBaseModel } from './models/RecycleBinItemResponseModelBaseModel'; export { RedirectStatusModel } from './models/RedirectStatusModel'; export type { RedirectUrlResponseModel } from './models/RedirectUrlResponseModel'; export type { RedirectUrlStatusResponseModel } from './models/RedirectUrlStatusResponseModel'; export type { ReferenceByIdModel } from './models/ReferenceByIdModel'; export type { RelationReferenceModel } from './models/RelationReferenceModel'; export type { RelationResponseModel } from './models/RelationResponseModel'; -export type { RelationTypeBaseModel } from './models/RelationTypeBaseModel'; export type { RelationTypeItemResponseModel } from './models/RelationTypeItemResponseModel'; export type { RelationTypeResponseModel } from './models/RelationTypeResponseModel'; -export type { RelationTypeTreeItemResponseModel } from './models/RelationTypeTreeItemResponseModel'; export type { RenamePartialViewRequestModel } from './models/RenamePartialViewRequestModel'; export type { RenameScriptRequestModel } from './models/RenameScriptRequestModel'; export type { RenameStylesheetRequestModel } from './models/RenameStylesheetRequestModel'; @@ -352,7 +298,6 @@ export type { ResetPasswordTokenRequestModel } from './models/ResetPasswordToken export type { ResetPasswordUserResponseModel } from './models/ResetPasswordUserResponseModel'; export { RuntimeLevelModel } from './models/RuntimeLevelModel'; export { RuntimeModeModel } from './models/RuntimeModeModel'; -export type { SavedLogSearchPresenationBaseModel } from './models/SavedLogSearchPresenationBaseModel'; export type { SavedLogSearchRequestModel } from './models/SavedLogSearchRequestModel'; export type { SavedLogSearchResponseModel } from './models/SavedLogSearchResponseModel'; export type { ScheduleRequestModel } from './models/ScheduleRequestModel'; @@ -362,7 +307,6 @@ export type { ScriptResponseModel } from './models/ScriptResponseModel'; export type { SearcherResponseModel } from './models/SearcherResponseModel'; export type { SearchResultResponseModel } from './models/SearchResultResponseModel'; export type { SecurityConfigurationResponseModel } from './models/SecurityConfigurationResponseModel'; -export type { ServerConfigurationBaseModel } from './models/ServerConfigurationBaseModel'; export type { ServerConfigurationItemResponseModel } from './models/ServerConfigurationItemResponseModel'; export type { ServerConfigurationResponseModel } from './models/ServerConfigurationResponseModel'; export type { ServerInformationResponseModel } from './models/ServerInformationResponseModel'; @@ -378,12 +322,10 @@ export type { StylesheetItemResponseModel } from './models/StylesheetItemRespons export type { StylesheetResponseModel } from './models/StylesheetResponseModel'; export type { TagResponseModel } from './models/TagResponseModel'; export { TelemetryLevelModel } from './models/TelemetryLevelModel'; -export type { TelemetryRepresentationBaseModel } from './models/TelemetryRepresentationBaseModel'; export type { TelemetryRequestModel } from './models/TelemetryRequestModel'; export type { TelemetryResponseModel } from './models/TelemetryResponseModel'; export type { TemplateConfigurationResponseModel } from './models/TemplateConfigurationResponseModel'; export type { TemplateItemResponseModel } from './models/TemplateItemResponseModel'; -export type { TemplateModelBaseModel } from './models/TemplateModelBaseModel'; export type { TemplateQueryExecuteFilterPresentationModel } from './models/TemplateQueryExecuteFilterPresentationModel'; export type { TemplateQueryExecuteModel } from './models/TemplateQueryExecuteModel'; export type { TemplateQueryExecuteSortModel } from './models/TemplateQueryExecuteSortModel'; @@ -397,19 +339,11 @@ export type { TemplateResponseModel } from './models/TemplateResponseModel'; export type { TemporaryFileConfigurationResponseModel } from './models/TemporaryFileConfigurationResponseModel'; export type { TemporaryFileResponseModel } from './models/TemporaryFileResponseModel'; export type { TourStatusModel } from './models/TourStatusModel'; -export type { TrackedReferenceContentTypeModel } from './models/TrackedReferenceContentTypeModel'; export type { TrackedReferenceDocumentTypeModel } from './models/TrackedReferenceDocumentTypeModel'; export type { TrackedReferenceMediaTypeModel } from './models/TrackedReferenceMediaTypeModel'; -export type { TreeItemPresentationModel } from './models/TreeItemPresentationModel'; export type { UnknownTypePermissionPresentationModel } from './models/UnknownTypePermissionPresentationModel'; export type { UnlockUsersRequestModel } from './models/UnlockUsersRequestModel'; export type { UnpublishDocumentRequestModel } from './models/UnpublishDocumentRequestModel'; -export type { UpdateContentForDocumentRequestModel } from './models/UpdateContentForDocumentRequestModel'; -export type { UpdateContentForMediaRequestModel } from './models/UpdateContentForMediaRequestModel'; -export type { UpdateContentForMemberRequestModel } from './models/UpdateContentForMemberRequestModel'; -export type { UpdateContentTypeForDocumentTypeRequestModel } from './models/UpdateContentTypeForDocumentTypeRequestModel'; -export type { UpdateContentTypeForMediaTypeRequestModel } from './models/UpdateContentTypeForMediaTypeRequestModel'; -export type { UpdateContentTypeForMemberTypeRequestModel } from './models/UpdateContentTypeForMemberTypeRequestModel'; export type { UpdateDataTypeRequestModel } from './models/UpdateDataTypeRequestModel'; export type { UpdateDictionaryItemRequestModel } from './models/UpdateDictionaryItemRequestModel'; export type { UpdateDocumentBlueprintRequestModel } from './models/UpdateDocumentBlueprintRequestModel'; @@ -441,30 +375,25 @@ export type { UpdateUserRequestModel } from './models/UpdateUserRequestModel'; export type { UpdateWebhookRequestModel } from './models/UpdateWebhookRequestModel'; export type { UpgradeSettingsResponseModel } from './models/UpgradeSettingsResponseModel'; export type { UserConfigurationResponseModel } from './models/UserConfigurationResponseModel'; -export type { UserGroupBaseModel } from './models/UserGroupBaseModel'; export type { UserGroupItemResponseModel } from './models/UserGroupItemResponseModel'; export type { UserGroupResponseModel } from './models/UserGroupResponseModel'; -export type { UserInstallPresentationModel } from './models/UserInstallPresentationModel'; +export type { UserInstallRequestModel } from './models/UserInstallRequestModel'; export type { UserItemResponseModel } from './models/UserItemResponseModel'; export { UserOrderModel } from './models/UserOrderModel'; export type { UserPermissionModel } from './models/UserPermissionModel'; export type { UserPermissionsResponseModel } from './models/UserPermissionsResponseModel'; -export type { UserPresentationBaseModel } from './models/UserPresentationBaseModel'; export type { UserResponseModel } from './models/UserResponseModel'; export type { UserSettingsPresentationModel } from './models/UserSettingsPresentationModel'; export { UserStateModel } from './models/UserStateModel'; export type { UserTourStatusesResponseModel } from './models/UserTourStatusesResponseModel'; export type { UserTwoFactorProviderModel } from './models/UserTwoFactorProviderModel'; -export type { ValueModelBaseModel } from './models/ValueModelBaseModel'; export type { VariantItemResponseModel } from './models/VariantItemResponseModel'; -export type { VariantItemResponseModelBaseModel } from './models/VariantItemResponseModelBaseModel'; -export type { VariantModelBaseModel } from './models/VariantModelBaseModel'; -export type { VariantResponseModelBaseModel } from './models/VariantResponseModelBaseModel'; export type { VerifyInviteUserRequestModel } from './models/VerifyInviteUserRequestModel'; +export type { VerifyInviteUserResponseModel } from './models/VerifyInviteUserResponseModel'; +export type { VerifyResetPasswordResponseModel } from './models/VerifyResetPasswordResponseModel'; export type { VerifyResetPasswordTokenRequestModel } from './models/VerifyResetPasswordTokenRequestModel'; export type { WebhookEventResponseModel } from './models/WebhookEventResponseModel'; export type { WebhookItemResponseModel } from './models/WebhookItemResponseModel'; -export type { WebhookModelBaseModel } from './models/WebhookModelBaseModel'; export type { WebhookResponseModel } from './models/WebhookResponseModel'; export { AuditLogResource } from './services/AuditLogResource'; @@ -482,6 +411,7 @@ export { IndexerResource } from './services/IndexerResource'; export { InstallResource } from './services/InstallResource'; export { LanguageResource } from './services/LanguageResource'; export { LogViewerResource } from './services/LogViewerResource'; +export { ManifestResource } from './services/ManifestResource'; export { MediaResource } from './services/MediaResource'; export { MediaTypeResource } from './services/MediaTypeResource'; export { MemberResource } from './services/MemberResource'; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AllowedContentTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AllowedContentTypeModel.ts deleted file mode 100644 index c7197ce531..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AllowedContentTypeModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type AllowedContentTypeModel = { - id: string; - name: string; - description?: string | null; - icon?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AllowedDocumentTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AllowedDocumentTypeModel.ts index 1762891713..725f59422b 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AllowedDocumentTypeModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AllowedDocumentTypeModel.ts @@ -3,7 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { AllowedContentTypeModel } from './AllowedContentTypeModel'; - -export type AllowedDocumentTypeModel = AllowedContentTypeModel; +export type AllowedDocumentTypeModel = { + id: string; + name: string; + description?: string | null; + icon?: string | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AllowedMediaTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AllowedMediaTypeModel.ts index 49ce218c3a..bd575fa328 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AllowedMediaTypeModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AllowedMediaTypeModel.ts @@ -3,7 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { AllowedContentTypeModel } from './AllowedContentTypeModel'; - -export type AllowedMediaTypeModel = AllowedContentTypeModel; +export type AllowedMediaTypeModel = { + id: string; + name: string; + description?: string | null; + icon?: string | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogBaseModel.ts deleted file mode 100644 index 31ec64b2dc..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogBaseModel.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { AuditLogEntityModel } from './AuditLogEntityModel'; -import type { AuditTypeModel } from './AuditTypeModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type AuditLogBaseModel = { - user: ReferenceByIdModel; - entity?: AuditLogEntityModel | null; - timestamp: string; - logType: AuditTypeModel; - comment?: string | null; - parameters?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogResponseModel.ts index 4ecddd6605..69bb0cda07 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogResponseModel.ts @@ -3,7 +3,16 @@ /* tslint:disable */ /* eslint-disable */ -import type { AuditLogBaseModel } from './AuditLogBaseModel'; +import type { AuditLogEntityModel } from './AuditLogEntityModel'; +import type { AuditTypeModel } from './AuditTypeModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type AuditLogResponseModel = AuditLogBaseModel; +export type AuditLogResponseModel = { + user: ReferenceByIdModel; + entity?: AuditLogEntityModel | null; + timestamp: string; + logType: AuditTypeModel; + comment?: string | null; + parameters?: string | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogWithUsernameResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogWithUsernameResponseModel.ts index 2ee1c4acc5..416fd4143b 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogWithUsernameResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AuditLogWithUsernameResponseModel.ts @@ -3,10 +3,18 @@ /* tslint:disable */ /* eslint-disable */ -import type { AuditLogBaseModel } from './AuditLogBaseModel'; +import type { AuditLogEntityModel } from './AuditLogEntityModel'; +import type { AuditTypeModel } from './AuditTypeModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type AuditLogWithUsernameResponseModel = (AuditLogBaseModel & { +export type AuditLogWithUsernameResponseModel = { + user: ReferenceByIdModel; + entity?: AuditLogEntityModel | null; + timestamp: string; + logType: AuditTypeModel; + comment?: string | null; + parameters?: string | null; userName?: string | null; userAvatars: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableContentTypeCompositionResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableContentTypeCompositionResponseModelBaseModel.ts deleted file mode 100644 index 43625c7194..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableContentTypeCompositionResponseModelBaseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type AvailableContentTypeCompositionResponseModelBaseModel = { - id: string; - name: string; - icon: string; - folderPath: Array; - isCompatible: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableDocumentTypeCompositionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableDocumentTypeCompositionResponseModel.ts index 4b89e8a211..f287c721e9 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableDocumentTypeCompositionResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableDocumentTypeCompositionResponseModel.ts @@ -3,7 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { AvailableContentTypeCompositionResponseModelBaseModel } from './AvailableContentTypeCompositionResponseModelBaseModel'; - -export type AvailableDocumentTypeCompositionResponseModel = AvailableContentTypeCompositionResponseModelBaseModel; +export type AvailableDocumentTypeCompositionResponseModel = { + id: string; + name: string; + icon: string; + folderPath: Array; + isCompatible: boolean; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableMediaTypeCompositionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableMediaTypeCompositionResponseModel.ts index fc784a2174..a339d81430 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableMediaTypeCompositionResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableMediaTypeCompositionResponseModel.ts @@ -3,7 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { AvailableContentTypeCompositionResponseModelBaseModel } from './AvailableContentTypeCompositionResponseModelBaseModel'; - -export type AvailableMediaTypeCompositionResponseModel = AvailableContentTypeCompositionResponseModelBaseModel; +export type AvailableMediaTypeCompositionResponseModel = { + id: string; + name: string; + icon: string; + folderPath: Array; + isCompatible: boolean; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableMemberTypeCompositionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableMemberTypeCompositionResponseModel.ts index 83e8fab554..8ef9fdf4af 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableMemberTypeCompositionResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/AvailableMemberTypeCompositionResponseModel.ts @@ -3,7 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { AvailableContentTypeCompositionResponseModelBaseModel } from './AvailableContentTypeCompositionResponseModelBaseModel'; - -export type AvailableMemberTypeCompositionResponseModel = AvailableContentTypeCompositionResponseModelBaseModel; +export type AvailableMemberTypeCompositionResponseModel = { + id: string; + name: string; + icon: string; + folderPath: Array; + isCompatible: boolean; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ChangePasswordCurrentUserRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ChangePasswordCurrentUserRequestModel.ts index bee5d23a50..dd395b8d39 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ChangePasswordCurrentUserRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ChangePasswordCurrentUserRequestModel.ts @@ -3,9 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { ChangePasswordUserRequestModel } from './ChangePasswordUserRequestModel'; - -export type ChangePasswordCurrentUserRequestModel = (ChangePasswordUserRequestModel & { +export type ChangePasswordCurrentUserRequestModel = { + newPassword: string; oldPassword?: string | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentCollectionResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentCollectionResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts deleted file mode 100644 index c3a8073181..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentCollectionResponseModelBaseDocumentValueModelDocumentVariantResponseModel.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentValueModel } from './DocumentValueModel'; -import type { DocumentVariantResponseModel } from './DocumentVariantResponseModel'; - -export type ContentCollectionResponseModelBaseDocumentValueModelDocumentVariantResponseModel = { - values: Array; - variants: Array; - id: string; - creator?: string | null; - sortOrder: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentCollectionResponseModelBaseMediaValueModelMediaVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentCollectionResponseModelBaseMediaValueModelMediaVariantResponseModel.ts deleted file mode 100644 index b9da60ae41..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentCollectionResponseModelBaseMediaValueModelMediaVariantResponseModel.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaValueModel } from './MediaValueModel'; -import type { MediaVariantResponseModel } from './MediaVariantResponseModel'; - -export type ContentCollectionResponseModelBaseMediaValueModelMediaVariantResponseModel = { - values: Array; - variants: Array; - id: string; - creator?: string | null; - sortOrder: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentForDocumentResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentForDocumentResponseModel.ts deleted file mode 100644 index fc7cecb9f6..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentForDocumentResponseModel.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypeReferenceResponseModel } from './DocumentTypeReferenceResponseModel'; -import type { DocumentValueModel } from './DocumentValueModel'; -import type { DocumentVariantResponseModel } from './DocumentVariantResponseModel'; - -export type ContentForDocumentResponseModel = { - values: Array; - variants: Array; - id: string; - documentType: DocumentTypeReferenceResponseModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentForMediaResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentForMediaResponseModel.ts deleted file mode 100644 index 5f4b42be51..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentForMediaResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaValueModel } from './MediaValueModel'; -import type { MediaVariantResponseModel } from './MediaVariantResponseModel'; - -export type ContentForMediaResponseModel = { - values: Array; - variants: Array; - id: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentForMemberResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentForMemberResponseModel.ts deleted file mode 100644 index 26b6266dfe..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentForMemberResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberValueModel } from './MemberValueModel'; -import type { MemberVariantResponseModel } from './MemberVariantResponseModel'; - -export type ContentForMemberResponseModel = { - values: Array; - variants: Array; - id: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTreeItemResponseModel.ts deleted file mode 100644 index bb5f9c106d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTreeItemResponseModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type ContentTreeItemResponseModel = { - hasChildren: boolean; - parent?: ReferenceByIdModel | null; - noAccess: boolean; - isTrashed: boolean; - id: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeCleanupBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeCleanupBaseModel.ts deleted file mode 100644 index 6ab4fb9195..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeCleanupBaseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ContentTypeCleanupBaseModel = { - preventCleanup: boolean; - keepAllVersionsNewerThanDays?: number | null; - keepLatestVersionPerDayForDays?: number | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeCollectionReferenceResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeCollectionReferenceResponseModelBaseModel.ts deleted file mode 100644 index 26866fcb40..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeCollectionReferenceResponseModelBaseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ContentTypeCollectionReferenceResponseModelBaseModel = { - id: string; - alias: string; - icon: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeCompositionRequestModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeCompositionRequestModelBaseModel.ts deleted file mode 100644 index 542c1c8653..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeCompositionRequestModelBaseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ContentTypeCompositionRequestModelBaseModel = { - id?: string | null; - currentPropertyAliases: Array; - currentCompositeIds: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeCompositionResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeCompositionResponseModelBaseModel.ts deleted file mode 100644 index 8de2c0f47e..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeCompositionResponseModelBaseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ContentTypeCompositionResponseModelBaseModel = { - id: string; - name: string; - icon: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeForDocumentTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeForDocumentTypeResponseModel.ts deleted file mode 100644 index b89c790244..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeForDocumentTypeResponseModel.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentTypePropertyTypeContainerResponseModel } from './DocumentTypePropertyTypeContainerResponseModel'; -import type { DocumentTypePropertyTypeResponseModel } from './DocumentTypePropertyTypeResponseModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type ContentTypeForDocumentTypeResponseModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - collection?: ReferenceByIdModel | null; - isElement: boolean; - properties: Array; - containers: Array; - id: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeForMediaTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeForMediaTypeResponseModel.ts deleted file mode 100644 index 16d6ad3480..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeForMediaTypeResponseModel.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaTypePropertyTypeContainerResponseModel } from './MediaTypePropertyTypeContainerResponseModel'; -import type { MediaTypePropertyTypeResponseModel } from './MediaTypePropertyTypeResponseModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type ContentTypeForMediaTypeResponseModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - collection?: ReferenceByIdModel | null; - isElement: boolean; - properties: Array; - containers: Array; - id: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeForMemberTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeForMemberTypeResponseModel.ts deleted file mode 100644 index cb0ad99ab8..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeForMemberTypeResponseModel.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberTypePropertyTypeContainerResponseModel } from './MemberTypePropertyTypeContainerResponseModel'; -import type { MemberTypePropertyTypeResponseModel } from './MemberTypePropertyTypeResponseModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type ContentTypeForMemberTypeResponseModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - collection?: ReferenceByIdModel | null; - isElement: boolean; - properties: Array; - containers: Array; - id: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeReferenceResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeReferenceResponseModelBaseModel.ts deleted file mode 100644 index af8e13c191..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentTypeReferenceResponseModelBaseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type ContentTypeReferenceResponseModelBaseModel = { - id: string; - icon: string; - collection?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentUrlInfoBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentUrlInfoBaseModel.ts deleted file mode 100644 index aac3c51da0..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ContentUrlInfoBaseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ContentUrlInfoBaseModel = { - culture?: string | null; - url: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentForDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentForDocumentRequestModel.ts deleted file mode 100644 index 5f3da3b0ff..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentForDocumentRequestModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentValueModel } from './DocumentValueModel'; -import type { DocumentVariantRequestModel } from './DocumentVariantRequestModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateContentForDocumentRequestModel = { - values: Array; - variants: Array; - id?: string | null; - parent?: ReferenceByIdModel | null; - documentType: ReferenceByIdModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentForMediaRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentForMediaRequestModel.ts deleted file mode 100644 index 252171141b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentForMediaRequestModel.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaValueModel } from './MediaValueModel'; -import type { MediaVariantRequestModel } from './MediaVariantRequestModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateContentForMediaRequestModel = { - values: Array; - variants: Array; - id?: string | null; - parent?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentForMemberRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentForMemberRequestModel.ts deleted file mode 100644 index db059bcee8..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentForMemberRequestModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberValueModel } from './MemberValueModel'; -import type { MemberVariantRequestModel } from './MemberVariantRequestModel'; - -export type CreateContentForMemberRequestModel = { - values: Array; - variants: Array; - id?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentTypeForDocumentTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentTypeForDocumentTypeRequestModel.ts deleted file mode 100644 index 408026829b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentTypeForDocumentTypeRequestModel.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { CreateDocumentTypePropertyTypeContainerRequestModel } from './CreateDocumentTypePropertyTypeContainerRequestModel'; -import type { CreateDocumentTypePropertyTypeRequestModel } from './CreateDocumentTypePropertyTypeRequestModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateContentTypeForDocumentTypeRequestModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - collection?: ReferenceByIdModel | null; - isElement: boolean; - properties: Array; - containers: Array; - id?: string | null; - parent?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentTypeForMediaTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentTypeForMediaTypeRequestModel.ts deleted file mode 100644 index 64b44f6d95..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentTypeForMediaTypeRequestModel.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { CreateMediaTypePropertyTypeContainerRequestModel } from './CreateMediaTypePropertyTypeContainerRequestModel'; -import type { CreateMediaTypePropertyTypeRequestModel } from './CreateMediaTypePropertyTypeRequestModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateContentTypeForMediaTypeRequestModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - collection?: ReferenceByIdModel | null; - isElement: boolean; - properties: Array; - containers: Array; - id?: string | null; - parent?: ReferenceByIdModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentTypeForMemberTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentTypeForMemberTypeRequestModel.ts deleted file mode 100644 index 103e02ebf5..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateContentTypeForMemberTypeRequestModel.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { CreateMemberTypePropertyTypeContainerRequestModel } from './CreateMemberTypePropertyTypeContainerRequestModel'; -import type { CreateMemberTypePropertyTypeRequestModel } from './CreateMemberTypePropertyTypeRequestModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type CreateContentTypeForMemberTypeRequestModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - collection?: ReferenceByIdModel | null; - isElement: boolean; - properties: Array; - containers: Array; - id?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDataTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDataTypeRequestModel.ts index 7d883cdd2e..5c29779e3b 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDataTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDataTypeRequestModel.ts @@ -3,11 +3,15 @@ /* tslint:disable */ /* eslint-disable */ -import type { DataTypeModelBaseModel } from './DataTypeModelBaseModel'; +import type { DataTypePropertyPresentationModel } from './DataTypePropertyPresentationModel'; import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type CreateDataTypeRequestModel = (DataTypeModelBaseModel & { +export type CreateDataTypeRequestModel = { + name: string; + editorAlias: string; + editorUiAlias?: string | null; + values: Array; id?: string | null; parent?: ReferenceByIdModel | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDictionaryItemRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDictionaryItemRequestModel.ts index 772bbe9762..deb3fb7478 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDictionaryItemRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDictionaryItemRequestModel.ts @@ -3,11 +3,13 @@ /* tslint:disable */ /* eslint-disable */ -import type { DictionaryItemModelBaseModel } from './DictionaryItemModelBaseModel'; +import type { DictionaryItemTranslationModel } from './DictionaryItemTranslationModel'; import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type CreateDictionaryItemRequestModel = (DictionaryItemModelBaseModel & { +export type CreateDictionaryItemRequestModel = { + name: string; + translations: Array; id?: string | null; parent?: ReferenceByIdModel | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentBlueprintRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentBlueprintRequestModel.ts index 51671b08dd..cf28d637b5 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentBlueprintRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentBlueprintRequestModel.ts @@ -3,7 +3,15 @@ /* tslint:disable */ /* eslint-disable */ -import type { CreateContentForDocumentRequestModel } from './CreateContentForDocumentRequestModel'; +import type { DocumentValueModel } from './DocumentValueModel'; +import type { DocumentVariantRequestModel } from './DocumentVariantRequestModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type CreateDocumentBlueprintRequestModel = CreateContentForDocumentRequestModel; +export type CreateDocumentBlueprintRequestModel = { + values: Array; + variants: Array; + id?: string | null; + parent?: ReferenceByIdModel | null; + documentType: ReferenceByIdModel; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentRequestModel.ts index 97bccb7772..a21cf5989e 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentRequestModel.ts @@ -3,10 +3,16 @@ /* tslint:disable */ /* eslint-disable */ -import type { CreateContentForDocumentRequestModel } from './CreateContentForDocumentRequestModel'; +import type { DocumentValueModel } from './DocumentValueModel'; +import type { DocumentVariantRequestModel } from './DocumentVariantRequestModel'; import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type CreateDocumentRequestModel = (CreateContentForDocumentRequestModel & { +export type CreateDocumentRequestModel = { + values: Array; + variants: Array; + id?: string | null; + parent?: ReferenceByIdModel | null; + documentType: ReferenceByIdModel; template?: ReferenceByIdModel | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypePropertyTypeContainerRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypePropertyTypeContainerRequestModel.ts index 75695a9551..370a87978b 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypePropertyTypeContainerRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypePropertyTypeContainerRequestModel.ts @@ -3,7 +3,13 @@ /* tslint:disable */ /* eslint-disable */ -import type { PropertyTypeContainerModelBaseModel } from './PropertyTypeContainerModelBaseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type CreateDocumentTypePropertyTypeContainerRequestModel = PropertyTypeContainerModelBaseModel; +export type CreateDocumentTypePropertyTypeContainerRequestModel = { + id: string; + parent?: ReferenceByIdModel | null; + name?: string | null; + type: string; + sortOrder: number; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypePropertyTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypePropertyTypeRequestModel.ts index 49c3e3cf95..902b96b771 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypePropertyTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypePropertyTypeRequestModel.ts @@ -3,7 +3,21 @@ /* tslint:disable */ /* eslint-disable */ -import type { PropertyTypeModelBaseModel } from './PropertyTypeModelBaseModel'; +import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; +import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type CreateDocumentTypePropertyTypeRequestModel = PropertyTypeModelBaseModel; +export type CreateDocumentTypePropertyTypeRequestModel = { + id: string; + container?: ReferenceByIdModel | null; + sortOrder: number; + alias: string; + name: string; + description?: string | null; + dataType: ReferenceByIdModel; + variesByCulture: boolean; + variesBySegment: boolean; + validation: PropertyTypeValidationModel; + appearance: PropertyTypeAppearanceModel; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypeRequestModel.ts index 7d861190b2..11d2577dd8 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateDocumentTypeRequestModel.ts @@ -3,17 +3,31 @@ /* tslint:disable */ /* eslint-disable */ -import type { CreateContentTypeForDocumentTypeRequestModel } from './CreateContentTypeForDocumentTypeRequestModel'; +import type { CreateDocumentTypePropertyTypeContainerRequestModel } from './CreateDocumentTypePropertyTypeContainerRequestModel'; +import type { CreateDocumentTypePropertyTypeRequestModel } from './CreateDocumentTypePropertyTypeRequestModel'; import type { DocumentTypeCleanupModel } from './DocumentTypeCleanupModel'; import type { DocumentTypeCompositionModel } from './DocumentTypeCompositionModel'; import type { DocumentTypeSortModel } from './DocumentTypeSortModel'; import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type CreateDocumentTypeRequestModel = (CreateContentTypeForDocumentTypeRequestModel & { +export type CreateDocumentTypeRequestModel = { + alias: string; + name: string; + description?: string | null; + icon: string; + allowedAsRoot: boolean; + variesByCulture: boolean; + variesBySegment: boolean; + collection?: ReferenceByIdModel | null; + isElement: boolean; + properties: Array; + containers: Array; + id?: string | null; + parent?: ReferenceByIdModel | null; allowedTemplates: Array; defaultTemplate?: ReferenceByIdModel | null; cleanup: DocumentTypeCleanupModel; allowedDocumentTypes: Array; compositions: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateFolderRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateFolderRequestModel.ts index 6851e3a039..f87cdddc18 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateFolderRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateFolderRequestModel.ts @@ -3,11 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { FolderModelBaseModel } from './FolderModelBaseModel'; import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type CreateFolderRequestModel = (FolderModelBaseModel & { +export type CreateFolderRequestModel = { + name: string; id?: string | null; parent?: ReferenceByIdModel | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateInitialPasswordUserRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateInitialPasswordUserRequestModel.ts index dbc957ff82..e62a6c6cf4 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateInitialPasswordUserRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateInitialPasswordUserRequestModel.ts @@ -3,9 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { VerifyInviteUserRequestModel } from './VerifyInviteUserRequestModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type CreateInitialPasswordUserRequestModel = (VerifyInviteUserRequestModel & { +export type CreateInitialPasswordUserRequestModel = { + user: ReferenceByIdModel; + token: string; password: string; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateLanguageRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateLanguageRequestModel.ts index 456b4e4b83..d1489b85d5 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateLanguageRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateLanguageRequestModel.ts @@ -3,9 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { LanguageModelBaseModel } from './LanguageModelBaseModel'; - -export type CreateLanguageRequestModel = (LanguageModelBaseModel & { +export type CreateLanguageRequestModel = { + name: string; + isDefault: boolean; + isMandatory: boolean; + fallbackIsoCode?: string | null; isoCode: string; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaRequestModel.ts index 937dcab69f..1dbf12c631 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaRequestModel.ts @@ -3,10 +3,15 @@ /* tslint:disable */ /* eslint-disable */ -import type { CreateContentForMediaRequestModel } from './CreateContentForMediaRequestModel'; +import type { MediaValueModel } from './MediaValueModel'; +import type { MediaVariantRequestModel } from './MediaVariantRequestModel'; import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type CreateMediaRequestModel = (CreateContentForMediaRequestModel & { +export type CreateMediaRequestModel = { + values: Array; + variants: Array; + id?: string | null; + parent?: ReferenceByIdModel | null; mediaType: ReferenceByIdModel; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypePropertyTypeContainerRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypePropertyTypeContainerRequestModel.ts index 8fea33fee6..5a8ab7d46c 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypePropertyTypeContainerRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypePropertyTypeContainerRequestModel.ts @@ -3,7 +3,13 @@ /* tslint:disable */ /* eslint-disable */ -import type { PropertyTypeContainerModelBaseModel } from './PropertyTypeContainerModelBaseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type CreateMediaTypePropertyTypeContainerRequestModel = PropertyTypeContainerModelBaseModel; +export type CreateMediaTypePropertyTypeContainerRequestModel = { + id: string; + parent?: ReferenceByIdModel | null; + name?: string | null; + type: string; + sortOrder: number; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypePropertyTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypePropertyTypeRequestModel.ts index 344b1852fb..17a5b45de7 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypePropertyTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypePropertyTypeRequestModel.ts @@ -3,7 +3,21 @@ /* tslint:disable */ /* eslint-disable */ -import type { PropertyTypeModelBaseModel } from './PropertyTypeModelBaseModel'; +import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; +import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type CreateMediaTypePropertyTypeRequestModel = PropertyTypeModelBaseModel; +export type CreateMediaTypePropertyTypeRequestModel = { + id: string; + container?: ReferenceByIdModel | null; + sortOrder: number; + alias: string; + name: string; + description?: string | null; + dataType: ReferenceByIdModel; + variesByCulture: boolean; + variesBySegment: boolean; + validation: PropertyTypeValidationModel; + appearance: PropertyTypeAppearanceModel; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypeRequestModel.ts index 9db4ac7433..f7c41dd1bd 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMediaTypeRequestModel.ts @@ -3,14 +3,27 @@ /* tslint:disable */ /* eslint-disable */ -import type { CreateContentTypeForMediaTypeRequestModel } from './CreateContentTypeForMediaTypeRequestModel'; +import type { CreateMediaTypePropertyTypeContainerRequestModel } from './CreateMediaTypePropertyTypeContainerRequestModel'; +import type { CreateMediaTypePropertyTypeRequestModel } from './CreateMediaTypePropertyTypeRequestModel'; import type { MediaTypeCompositionModel } from './MediaTypeCompositionModel'; import type { MediaTypeSortModel } from './MediaTypeSortModel'; import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type CreateMediaTypeRequestModel = (CreateContentTypeForMediaTypeRequestModel & { +export type CreateMediaTypeRequestModel = { + alias: string; + name: string; + description?: string | null; + icon: string; + allowedAsRoot: boolean; + variesByCulture: boolean; + variesBySegment: boolean; + isElement: boolean; + properties: Array; + containers: Array; + id?: string | null; + parent?: ReferenceByIdModel | null; allowedMediaTypes: Array; compositions: Array; collection?: ReferenceByIdModel | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberGroupRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberGroupRequestModel.ts index 3020dc0fcb..ebfbea378f 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberGroupRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberGroupRequestModel.ts @@ -3,9 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { MemberGroupPresentationBaseModel } from './MemberGroupPresentationBaseModel'; - -export type CreateMemberGroupRequestModel = (MemberGroupPresentationBaseModel & { +export type CreateMemberGroupRequestModel = { + name: string; id?: string | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberRequestModel.ts index 0034877615..65add263b9 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberRequestModel.ts @@ -3,15 +3,19 @@ /* tslint:disable */ /* eslint-disable */ -import type { CreateContentForMemberRequestModel } from './CreateContentForMemberRequestModel'; +import type { MemberValueModel } from './MemberValueModel'; +import type { MemberVariantRequestModel } from './MemberVariantRequestModel'; import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type CreateMemberRequestModel = (CreateContentForMemberRequestModel & { +export type CreateMemberRequestModel = { + values: Array; + variants: Array; + id?: string | null; email: string; username: string; password: string; memberType: ReferenceByIdModel; groups?: Array | null; isApproved: boolean; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypePropertyTypeContainerRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypePropertyTypeContainerRequestModel.ts index baa52684a6..1815f05075 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypePropertyTypeContainerRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypePropertyTypeContainerRequestModel.ts @@ -3,7 +3,13 @@ /* tslint:disable */ /* eslint-disable */ -import type { PropertyTypeContainerModelBaseModel } from './PropertyTypeContainerModelBaseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type CreateMemberTypePropertyTypeContainerRequestModel = PropertyTypeContainerModelBaseModel; +export type CreateMemberTypePropertyTypeContainerRequestModel = { + id: string; + parent?: ReferenceByIdModel | null; + name?: string | null; + type: string; + sortOrder: number; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypePropertyTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypePropertyTypeRequestModel.ts index aeae062c72..f3681e28ca 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypePropertyTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypePropertyTypeRequestModel.ts @@ -3,7 +3,24 @@ /* tslint:disable */ /* eslint-disable */ -import type { MemberTypePropertyTypeModelBaseModel } from './MemberTypePropertyTypeModelBaseModel'; +import type { MemberTypePropertyTypeVisibilityModel } from './MemberTypePropertyTypeVisibilityModel'; +import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; +import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type CreateMemberTypePropertyTypeRequestModel = MemberTypePropertyTypeModelBaseModel; +export type CreateMemberTypePropertyTypeRequestModel = { + id: string; + container?: ReferenceByIdModel | null; + sortOrder: number; + alias: string; + name: string; + description?: string | null; + dataType: ReferenceByIdModel; + variesByCulture: boolean; + variesBySegment: boolean; + validation: PropertyTypeValidationModel; + appearance: PropertyTypeAppearanceModel; + isSensitive: boolean; + visibility: MemberTypePropertyTypeVisibilityModel; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypeRequestModel.ts index 5f7dc8d783..4904e62cc0 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateMemberTypeRequestModel.ts @@ -3,10 +3,24 @@ /* tslint:disable */ /* eslint-disable */ -import type { CreateContentTypeForMemberTypeRequestModel } from './CreateContentTypeForMemberTypeRequestModel'; +import type { CreateMemberTypePropertyTypeContainerRequestModel } from './CreateMemberTypePropertyTypeContainerRequestModel'; +import type { CreateMemberTypePropertyTypeRequestModel } from './CreateMemberTypePropertyTypeRequestModel'; import type { MemberTypeCompositionModel } from './MemberTypeCompositionModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type CreateMemberTypeRequestModel = (CreateContentTypeForMemberTypeRequestModel & { +export type CreateMemberTypeRequestModel = { + alias: string; + name: string; + description?: string | null; + icon: string; + allowedAsRoot: boolean; + variesByCulture: boolean; + variesBySegment: boolean; + collection?: ReferenceByIdModel | null; + isElement: boolean; + properties: Array; + containers: Array; + id?: string | null; compositions: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePackageRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePackageRequestModel.ts index 73977ee1aa..97496f1f92 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePackageRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePackageRequestModel.ts @@ -3,7 +3,20 @@ /* tslint:disable */ /* eslint-disable */ -import type { PackageModelBaseModel } from './PackageModelBaseModel'; - -export type CreatePackageRequestModel = PackageModelBaseModel; +export type CreatePackageRequestModel = { + name: string; + contentNodeId?: string | null; + contentLoadChildNodes: boolean; + mediaIds: Array; + mediaLoadChildNodes: boolean; + documentTypes: Array; + mediaTypes: Array; + dataTypes: Array; + templates: Array; + partialViews: Array; + stylesheets: Array; + scripts: Array; + languages: Array; + dictionaryItems: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePartialViewFolderRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePartialViewFolderRequestModel.ts index fd1a8dbe23..15282452c9 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePartialViewFolderRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePartialViewFolderRequestModel.ts @@ -3,7 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemCreateRequestModelBaseModel } from './FileSystemCreateRequestModelBaseModel'; +import type { FileSystemFolderModel } from './FileSystemFolderModel'; -export type CreatePartialViewFolderRequestModel = FileSystemCreateRequestModelBaseModel; +export type CreatePartialViewFolderRequestModel = { + name: string; + parent?: FileSystemFolderModel | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePartialViewRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePartialViewRequestModel.ts index ce26671883..82139f8109 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePartialViewRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreatePartialViewRequestModel.ts @@ -3,7 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemFileCreateRequestModelBaseModel } from './FileSystemFileCreateRequestModelBaseModel'; +import type { FileSystemFolderModel } from './FileSystemFolderModel'; -export type CreatePartialViewRequestModel = FileSystemFileCreateRequestModelBaseModel; +export type CreatePartialViewRequestModel = { + name: string; + parent?: FileSystemFolderModel | null; + content: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateScriptFolderRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateScriptFolderRequestModel.ts index 4972e3c270..54832896b3 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateScriptFolderRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateScriptFolderRequestModel.ts @@ -3,7 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemCreateRequestModelBaseModel } from './FileSystemCreateRequestModelBaseModel'; +import type { FileSystemFolderModel } from './FileSystemFolderModel'; -export type CreateScriptFolderRequestModel = FileSystemCreateRequestModelBaseModel; +export type CreateScriptFolderRequestModel = { + name: string; + parent?: FileSystemFolderModel | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateScriptRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateScriptRequestModel.ts index 999ca5c0d3..5e93399521 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateScriptRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateScriptRequestModel.ts @@ -3,7 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemFileCreateRequestModelBaseModel } from './FileSystemFileCreateRequestModelBaseModel'; +import type { FileSystemFolderModel } from './FileSystemFolderModel'; -export type CreateScriptRequestModel = FileSystemFileCreateRequestModelBaseModel; +export type CreateScriptRequestModel = { + name: string; + parent?: FileSystemFolderModel | null; + content: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateStylesheetFolderRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateStylesheetFolderRequestModel.ts index 3b901eff6e..e31be7b932 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateStylesheetFolderRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateStylesheetFolderRequestModel.ts @@ -3,7 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemCreateRequestModelBaseModel } from './FileSystemCreateRequestModelBaseModel'; +import type { FileSystemFolderModel } from './FileSystemFolderModel'; -export type CreateStylesheetFolderRequestModel = FileSystemCreateRequestModelBaseModel; +export type CreateStylesheetFolderRequestModel = { + name: string; + parent?: FileSystemFolderModel | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateStylesheetRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateStylesheetRequestModel.ts index f682637920..681e36ed05 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateStylesheetRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateStylesheetRequestModel.ts @@ -3,7 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemFileCreateRequestModelBaseModel } from './FileSystemFileCreateRequestModelBaseModel'; +import type { FileSystemFolderModel } from './FileSystemFolderModel'; -export type CreateStylesheetRequestModel = FileSystemFileCreateRequestModelBaseModel; +export type CreateStylesheetRequestModel = { + name: string; + parent?: FileSystemFolderModel | null; + content: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateTemplateRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateTemplateRequestModel.ts index 6f72bd38a3..a1997efd5e 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateTemplateRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateTemplateRequestModel.ts @@ -3,9 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { TemplateModelBaseModel } from './TemplateModelBaseModel'; - -export type CreateTemplateRequestModel = (TemplateModelBaseModel & { +export type CreateTemplateRequestModel = { + name: string; + alias: string; + content?: string | null; id?: string | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateUserGroupRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateUserGroupRequestModel.ts index 1cceb76e9a..a7d78bca69 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateUserGroupRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateUserGroupRequestModel.ts @@ -3,7 +3,21 @@ /* tslint:disable */ /* eslint-disable */ -import type { UserGroupBaseModel } from './UserGroupBaseModel'; +import type { DocumentPermissionPresentationModel } from './DocumentPermissionPresentationModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; +import type { UnknownTypePermissionPresentationModel } from './UnknownTypePermissionPresentationModel'; -export type CreateUserGroupRequestModel = UserGroupBaseModel; +export type CreateUserGroupRequestModel = { + name: string; + icon?: string | null; + sections: Array; + languages: Array; + hasAccessToAllLanguages: boolean; + documentStartNode?: ReferenceByIdModel | null; + documentRootAccess: boolean; + mediaStartNode?: ReferenceByIdModel | null; + mediaRootAccess: boolean; + fallbackPermissions: Array; + permissions: Array<(DocumentPermissionPresentationModel | UnknownTypePermissionPresentationModel)>; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateUserRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateUserRequestModel.ts index f222dc6861..08ecdf6439 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateUserRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateUserRequestModel.ts @@ -3,9 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { UserPresentationBaseModel } from './UserPresentationBaseModel'; - -export type CreateUserRequestModel = (UserPresentationBaseModel & { +export type CreateUserRequestModel = { + email: string; + userName: string; + name: string; + userGroupIds: Array; id?: string | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateWebhookRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateWebhookRequestModel.ts index 5efdacf129..323b7705d7 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateWebhookRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/CreateWebhookRequestModel.ts @@ -3,10 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { WebhookModelBaseModel } from './WebhookModelBaseModel'; - -export type CreateWebhookRequestModel = (WebhookModelBaseModel & { +export type CreateWebhookRequestModel = { + enabled: boolean; + url: string; + contentTypeKeys: Array; + headers: Record; id?: string | null; events: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeItemResponseModel.ts index bdf9f4f741..6ce59dedaa 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeItemResponseModel.ts @@ -3,10 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { NamedItemResponseModelBaseModel } from './NamedItemResponseModelBaseModel'; - -export type DataTypeItemResponseModel = (NamedItemResponseModelBaseModel & { +export type DataTypeItemResponseModel = { + id: string; + name: string; editorUiAlias?: string | null; isDeletable: boolean; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeModelBaseModel.ts deleted file mode 100644 index 7c3a1d770a..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeModelBaseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DataTypePropertyPresentationModel } from './DataTypePropertyPresentationModel'; - -export type DataTypeModelBaseModel = { - name: string; - editorAlias: string; - editorUiAlias?: string | null; - values: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeResponseModel.ts index 2f4e18ad3c..56629e41fc 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeResponseModel.ts @@ -3,11 +3,15 @@ /* tslint:disable */ /* eslint-disable */ -import type { DataTypeModelBaseModel } from './DataTypeModelBaseModel'; +import type { DataTypePropertyPresentationModel } from './DataTypePropertyPresentationModel'; -export type DataTypeResponseModel = (DataTypeModelBaseModel & { +export type DataTypeResponseModel = { + name: string; + editorAlias: string; + editorUiAlias?: string | null; + values: Array; id: string; isDeletable: boolean; canIgnoreStartNodes: boolean; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeTreeItemResponseModel.ts index b52e27e07f..450ae578e0 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DataTypeTreeItemResponseModel.ts @@ -3,10 +3,15 @@ /* tslint:disable */ /* eslint-disable */ -import type { FolderTreeItemResponseModel } from './FolderTreeItemResponseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type DataTypeTreeItemResponseModel = (FolderTreeItemResponseModel & { +export type DataTypeTreeItemResponseModel = { + hasChildren: boolean; + id: string; + parent?: ReferenceByIdModel | null; + name: string; + isFolder: boolean; editorUiAlias?: string | null; isDeletable: boolean; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DatabaseInstallPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DatabaseInstallPresentationModel.ts deleted file mode 100644 index 2637a7496d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DatabaseInstallPresentationModel.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type DatabaseInstallPresentationModel = { - id: string; - providerName: string; - server?: string | null; - name?: string | null; - username?: string | null; - password?: string | null; - useIntegratedAuthentication: boolean; - connectionString?: string | null; - trustServerCertificate: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DatabaseInstallRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DatabaseInstallRequestModel.ts index ad3537567e..d48d7e5551 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DatabaseInstallRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DatabaseInstallRequestModel.ts @@ -3,7 +3,15 @@ /* tslint:disable */ /* eslint-disable */ -import type { DatabaseInstallPresentationModel } from './DatabaseInstallPresentationModel'; - -export type DatabaseInstallRequestModel = DatabaseInstallPresentationModel; +export type DatabaseInstallRequestModel = { + id: string; + providerName: string; + server?: string | null; + name?: string | null; + username?: string | null; + password?: string | null; + useIntegratedAuthentication: boolean; + connectionString?: string | null; + trustServerCertificate: boolean; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemItemResponseModel.ts index 38f73f486d..04da3773ba 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemItemResponseModel.ts @@ -3,7 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { NamedItemResponseModelBaseModel } from './NamedItemResponseModelBaseModel'; - -export type DictionaryItemItemResponseModel = NamedItemResponseModelBaseModel; +export type DictionaryItemItemResponseModel = { + id: string; + name: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemModelBaseModel.ts deleted file mode 100644 index 3ab80babb0..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemModelBaseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DictionaryItemTranslationModel } from './DictionaryItemTranslationModel'; - -export type DictionaryItemModelBaseModel = { - name: string; - translations: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemResponseModel.ts index 54a63654cf..5645077355 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DictionaryItemResponseModel.ts @@ -3,9 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { DictionaryItemModelBaseModel } from './DictionaryItemModelBaseModel'; +import type { DictionaryItemTranslationModel } from './DictionaryItemTranslationModel'; -export type DictionaryItemResponseModel = (DictionaryItemModelBaseModel & { +export type DictionaryItemResponseModel = { + name: string; + translations: Array; id: string; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintItemResponseModel.ts index 0faf7e1ffc..f7effed27c 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintItemResponseModel.ts @@ -4,9 +4,10 @@ /* eslint-disable */ import type { DocumentTypeReferenceResponseModel } from './DocumentTypeReferenceResponseModel'; -import type { NamedItemResponseModelBaseModel } from './NamedItemResponseModelBaseModel'; -export type DocumentBlueprintItemResponseModel = (NamedItemResponseModelBaseModel & { +export type DocumentBlueprintItemResponseModel = { + id: string; + name: string; documentType: DocumentTypeReferenceResponseModel; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintResponseModel.ts index d020fce117..4f6601241b 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintResponseModel.ts @@ -3,7 +3,14 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentForDocumentResponseModel } from './ContentForDocumentResponseModel'; +import type { DocumentTypeReferenceResponseModel } from './DocumentTypeReferenceResponseModel'; +import type { DocumentValueModel } from './DocumentValueModel'; +import type { DocumentVariantResponseModel } from './DocumentVariantResponseModel'; -export type DocumentBlueprintResponseModel = ContentForDocumentResponseModel; +export type DocumentBlueprintResponseModel = { + values: Array; + variants: Array; + id: string; + documentType: DocumentTypeReferenceResponseModel; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts index 6c1c09490f..3df3c06dce 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentBlueprintTreeItemResponseModel.ts @@ -4,9 +4,14 @@ /* eslint-disable */ import type { DocumentTypeReferenceResponseModel } from './DocumentTypeReferenceResponseModel'; -import type { NamedEntityTreeItemResponseModel } from './NamedEntityTreeItemResponseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type DocumentBlueprintTreeItemResponseModel = (NamedEntityTreeItemResponseModel & { - documentType: DocumentTypeReferenceResponseModel; -}); +export type DocumentBlueprintTreeItemResponseModel = { + hasChildren: boolean; + id: string; + parent?: ReferenceByIdModel | null; + name: string; + isFolder: boolean; + documentType?: DocumentTypeReferenceResponseModel | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentCollectionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentCollectionResponseModel.ts index 49b0b794b6..c8636e3fd1 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentCollectionResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentCollectionResponseModel.ts @@ -3,11 +3,17 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentCollectionResponseModelBaseDocumentValueModelDocumentVariantResponseModel } from './ContentCollectionResponseModelBaseDocumentValueModelDocumentVariantResponseModel'; import type { DocumentTypeCollectionReferenceResponseModel } from './DocumentTypeCollectionReferenceResponseModel'; +import type { DocumentValueModel } from './DocumentValueModel'; +import type { DocumentVariantResponseModel } from './DocumentVariantResponseModel'; -export type DocumentCollectionResponseModel = (ContentCollectionResponseModelBaseDocumentValueModelDocumentVariantResponseModel & { +export type DocumentCollectionResponseModel = { + values: Array; + variants: Array; + id: string; + creator?: string | null; + sortOrder: number; documentType: DocumentTypeCollectionReferenceResponseModel; updater?: string | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentItemResponseModel.ts index 80630f509d..4721077438 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentItemResponseModel.ts @@ -5,12 +5,12 @@ import type { DocumentTypeReferenceResponseModel } from './DocumentTypeReferenceResponseModel'; import type { DocumentVariantItemResponseModel } from './DocumentVariantItemResponseModel'; -import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; -export type DocumentItemResponseModel = (ItemResponseModelBaseModel & { +export type DocumentItemResponseModel = { + id: string; isTrashed: boolean; isProtected: boolean; documentType: DocumentTypeReferenceResponseModel; variants: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentRecycleBinItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentRecycleBinItemResponseModel.ts index c594d375b0..0cbc6e3eed 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentRecycleBinItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentRecycleBinItemResponseModel.ts @@ -5,10 +5,13 @@ import type { DocumentTypeReferenceResponseModel } from './DocumentTypeReferenceResponseModel'; import type { DocumentVariantItemResponseModel } from './DocumentVariantItemResponseModel'; -import type { RecycleBinItemResponseModelBaseModel } from './RecycleBinItemResponseModelBaseModel'; +import type { ItemReferenceByIdResponseModel } from './ItemReferenceByIdResponseModel'; -export type DocumentRecycleBinItemResponseModel = (RecycleBinItemResponseModelBaseModel & { +export type DocumentRecycleBinItemResponseModel = { + id: string; + hasChildren: boolean; + parent?: ItemReferenceByIdResponseModel | null; documentType: DocumentTypeReferenceResponseModel; variants: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentResponseModel.ts index 3186f6e122..e748a2fa23 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentResponseModel.ts @@ -3,13 +3,19 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentForDocumentResponseModel } from './ContentForDocumentResponseModel'; +import type { DocumentTypeReferenceResponseModel } from './DocumentTypeReferenceResponseModel'; import type { DocumentUrlInfoModel } from './DocumentUrlInfoModel'; +import type { DocumentValueModel } from './DocumentValueModel'; +import type { DocumentVariantResponseModel } from './DocumentVariantResponseModel'; import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type DocumentResponseModel = (ContentForDocumentResponseModel & { +export type DocumentResponseModel = { + values: Array; + variants: Array; + id: string; + documentType: DocumentTypeReferenceResponseModel; urls: Array; template?: ReferenceByIdModel | null; isTrashed: boolean; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTreeItemResponseModel.ts index 3f202d48c6..85c85414ce 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTreeItemResponseModel.ts @@ -3,13 +3,18 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTreeItemResponseModel } from './ContentTreeItemResponseModel'; import type { DocumentTypeReferenceResponseModel } from './DocumentTypeReferenceResponseModel'; import type { DocumentVariantItemResponseModel } from './DocumentVariantItemResponseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type DocumentTreeItemResponseModel = (ContentTreeItemResponseModel & { +export type DocumentTreeItemResponseModel = { + hasChildren: boolean; + parent?: ReferenceByIdModel | null; + noAccess: boolean; + isTrashed: boolean; + id: string; isProtected: boolean; documentType: DocumentTypeReferenceResponseModel; variants: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCleanupModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCleanupModel.ts index 08eae47a4c..c6bcdef753 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCleanupModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCleanupModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTypeCleanupBaseModel } from './ContentTypeCleanupBaseModel'; - -export type DocumentTypeCleanupModel = ContentTypeCleanupBaseModel; +export type DocumentTypeCleanupModel = { + preventCleanup: boolean; + keepAllVersionsNewerThanDays?: number | null; + keepLatestVersionPerDayForDays?: number | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCollectionReferenceResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCollectionReferenceResponseModel.ts index b934c7618f..8922a1b413 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCollectionReferenceResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCollectionReferenceResponseModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTypeCollectionReferenceResponseModelBaseModel } from './ContentTypeCollectionReferenceResponseModelBaseModel'; - -export type DocumentTypeCollectionReferenceResponseModel = ContentTypeCollectionReferenceResponseModelBaseModel; +export type DocumentTypeCollectionReferenceResponseModel = { + id: string; + alias: string; + icon: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCompositionRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCompositionRequestModel.ts index 344d632776..cfd8527f75 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCompositionRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCompositionRequestModel.ts @@ -3,9 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTypeCompositionRequestModelBaseModel } from './ContentTypeCompositionRequestModelBaseModel'; - -export type DocumentTypeCompositionRequestModel = (ContentTypeCompositionRequestModelBaseModel & { +export type DocumentTypeCompositionRequestModel = { + id?: string | null; + currentPropertyAliases: Array; + currentCompositeIds: Array; isElement: boolean; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCompositionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCompositionResponseModel.ts index 0377d10c3c..77785325a6 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCompositionResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeCompositionResponseModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTypeCompositionResponseModelBaseModel } from './ContentTypeCompositionResponseModelBaseModel'; - -export type DocumentTypeCompositionResponseModel = ContentTypeCompositionResponseModelBaseModel; +export type DocumentTypeCompositionResponseModel = { + id: string; + name: string; + icon: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeItemResponseModel.ts index 1ed148dec1..a0c7a5c1be 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeItemResponseModel.ts @@ -3,10 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { NamedItemResponseModelBaseModel } from './NamedItemResponseModelBaseModel'; - -export type DocumentTypeItemResponseModel = (NamedItemResponseModelBaseModel & { +export type DocumentTypeItemResponseModel = { + id: string; + name: string; isElement: boolean; icon?: string | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts index f6a57aa6c7..ba1da5ed90 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypePropertyTypeContainerResponseModel.ts @@ -3,7 +3,13 @@ /* tslint:disable */ /* eslint-disable */ -import type { PropertyTypeContainerModelBaseModel } from './PropertyTypeContainerModelBaseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type DocumentTypePropertyTypeContainerResponseModel = PropertyTypeContainerModelBaseModel; +export type DocumentTypePropertyTypeContainerResponseModel = { + id: string; + parent?: ReferenceByIdModel | null; + name?: string | null; + type: string; + sortOrder: number; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts index 14837ade42..8ab9019a74 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypePropertyTypeResponseModel.ts @@ -3,7 +3,21 @@ /* tslint:disable */ /* eslint-disable */ -import type { PropertyTypeModelBaseModel } from './PropertyTypeModelBaseModel'; +import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; +import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type DocumentTypePropertyTypeResponseModel = PropertyTypeModelBaseModel; +export type DocumentTypePropertyTypeResponseModel = { + id: string; + container?: ReferenceByIdModel | null; + sortOrder: number; + alias: string; + name: string; + description?: string | null; + dataType: ReferenceByIdModel; + variesByCulture: boolean; + variesBySegment: boolean; + validation: PropertyTypeValidationModel; + appearance: PropertyTypeAppearanceModel; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeReferenceResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeReferenceResponseModel.ts index 1ce7ab1db8..6c330ee6bc 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeReferenceResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeReferenceResponseModel.ts @@ -3,7 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTypeReferenceResponseModelBaseModel } from './ContentTypeReferenceResponseModelBaseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type DocumentTypeReferenceResponseModel = ContentTypeReferenceResponseModelBaseModel; +export type DocumentTypeReferenceResponseModel = { + id: string; + icon: string; + collection?: ReferenceByIdModel | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeResponseModel.ts index 320974edee..59794877d0 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeResponseModel.ts @@ -3,17 +3,30 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTypeForDocumentTypeResponseModel } from './ContentTypeForDocumentTypeResponseModel'; import type { DocumentTypeCleanupModel } from './DocumentTypeCleanupModel'; import type { DocumentTypeCompositionModel } from './DocumentTypeCompositionModel'; +import type { DocumentTypePropertyTypeContainerResponseModel } from './DocumentTypePropertyTypeContainerResponseModel'; +import type { DocumentTypePropertyTypeResponseModel } from './DocumentTypePropertyTypeResponseModel'; import type { DocumentTypeSortModel } from './DocumentTypeSortModel'; import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type DocumentTypeResponseModel = (ContentTypeForDocumentTypeResponseModel & { +export type DocumentTypeResponseModel = { + alias: string; + name: string; + description?: string | null; + icon: string; + allowedAsRoot: boolean; + variesByCulture: boolean; + variesBySegment: boolean; + collection?: ReferenceByIdModel | null; + isElement: boolean; + properties: Array; + containers: Array; + id: string; allowedTemplates: Array; defaultTemplate?: ReferenceByIdModel | null; cleanup: DocumentTypeCleanupModel; allowedDocumentTypes: Array; compositions: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts index cb9a379165..2f19862537 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentTypeTreeItemResponseModel.ts @@ -3,10 +3,15 @@ /* tslint:disable */ /* eslint-disable */ -import type { FolderTreeItemResponseModel } from './FolderTreeItemResponseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type DocumentTypeTreeItemResponseModel = (FolderTreeItemResponseModel & { +export type DocumentTypeTreeItemResponseModel = { + hasChildren: boolean; + id: string; + parent?: ReferenceByIdModel | null; + name: string; + isFolder: boolean; isElement: boolean; icon: string; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentUrlInfoModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentUrlInfoModel.ts index 62d36438ef..19abf147fb 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentUrlInfoModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentUrlInfoModel.ts @@ -3,7 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentUrlInfoBaseModel } from './ContentUrlInfoBaseModel'; - -export type DocumentUrlInfoModel = ContentUrlInfoBaseModel; +export type DocumentUrlInfoModel = { + culture?: string | null; + url: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentValueModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentValueModel.ts index d97801007c..7dbb92fb62 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentValueModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentValueModel.ts @@ -3,7 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { ValueModelBaseModel } from './ValueModelBaseModel'; - -export type DocumentValueModel = ValueModelBaseModel; +export type DocumentValueModel = { + culture?: string | null; + segment?: string | null; + alias: string; + value?: any; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantItemResponseModel.ts index cf73b0299c..be8ee74fa3 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantItemResponseModel.ts @@ -4,9 +4,10 @@ /* eslint-disable */ import type { DocumentVariantStateModel } from './DocumentVariantStateModel'; -import type { VariantItemResponseModelBaseModel } from './VariantItemResponseModelBaseModel'; -export type DocumentVariantItemResponseModel = (VariantItemResponseModelBaseModel & { +export type DocumentVariantItemResponseModel = { + name: string; + culture?: string | null; state: DocumentVariantStateModel; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantRequestModel.ts index 4d79c4109a..cfe9479479 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantRequestModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { VariantModelBaseModel } from './VariantModelBaseModel'; - -export type DocumentVariantRequestModel = VariantModelBaseModel; +export type DocumentVariantRequestModel = { + culture?: string | null; + segment?: string | null; + name: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantResponseModel.ts index 4325188f65..fed5af6be7 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVariantResponseModel.ts @@ -4,10 +4,14 @@ /* eslint-disable */ import type { DocumentVariantStateModel } from './DocumentVariantStateModel'; -import type { VariantResponseModelBaseModel } from './VariantResponseModelBaseModel'; -export type DocumentVariantResponseModel = (VariantResponseModelBaseModel & { +export type DocumentVariantResponseModel = { + culture?: string | null; + segment?: string | null; + name: string; + createDate: string; + updateDate: string; state: DocumentVariantStateModel; publishDate?: string | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVersionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVersionResponseModel.ts index ec869a897b..10863233ba 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVersionResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DocumentVersionResponseModel.ts @@ -3,10 +3,16 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentForDocumentResponseModel } from './ContentForDocumentResponseModel'; +import type { DocumentTypeReferenceResponseModel } from './DocumentTypeReferenceResponseModel'; +import type { DocumentValueModel } from './DocumentValueModel'; +import type { DocumentVariantResponseModel } from './DocumentVariantResponseModel'; import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type DocumentVersionResponseModel = (ContentForDocumentResponseModel & { +export type DocumentVersionResponseModel = { + values: Array; + variants: Array; + id: string; + documentType: DocumentTypeReferenceResponseModel; document?: ReferenceByIdModel | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DomainsPresentationModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DomainsPresentationModelBaseModel.ts deleted file mode 100644 index 193e811957..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DomainsPresentationModelBaseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DomainPresentationModel } from './DomainPresentationModel'; - -export type DomainsPresentationModelBaseModel = { - defaultIsoCode?: string | null; - domains: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DomainsResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DomainsResponseModel.ts index f8d8a1ff18..a9db3960b0 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DomainsResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/DomainsResponseModel.ts @@ -3,7 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { DomainsPresentationModelBaseModel } from './DomainsPresentationModelBaseModel'; +import type { DomainPresentationModel } from './DomainPresentationModel'; -export type DomainsResponseModel = DomainsPresentationModelBaseModel; +export type DomainsResponseModel = { + defaultIsoCode?: string | null; + domains: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/EntityTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/EntityTreeItemResponseModel.ts deleted file mode 100644 index d14eb5cc31..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/EntityTreeItemResponseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; -import type { TreeItemPresentationModel } from './TreeItemPresentationModel'; - -export type EntityTreeItemResponseModel = (TreeItemPresentationModel & { - id: string; - parent?: ReferenceByIdModel | null; -}); - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemCreateRequestModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemCreateRequestModelBaseModel.ts deleted file mode 100644 index 68a90eeeb1..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemCreateRequestModelBaseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type FileSystemCreateRequestModelBaseModel = { - name: string; - parent?: FileSystemFolderModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemFileCreateRequestModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemFileCreateRequestModelBaseModel.ts deleted file mode 100644 index 5b9eb3d4cf..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemFileCreateRequestModelBaseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type FileSystemFileCreateRequestModelBaseModel = { - name: string; - parent?: FileSystemFolderModel | null; - content: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemFileResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemFileResponseModelBaseModel.ts deleted file mode 100644 index 59c8bb0c08..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemFileResponseModelBaseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type FileSystemFileResponseModelBaseModel = { - path: string; - name: string; - parent?: FileSystemFolderModel | null; - content: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemFileUpdateRequestModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemFileUpdateRequestModelBaseModel.ts deleted file mode 100644 index 44ec79a002..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemFileUpdateRequestModelBaseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type FileSystemFileUpdateRequestModelBaseModel = { - content: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemFolderModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemFolderModel.ts index 90964c53e9..4e3e5a8217 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemFolderModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemFolderModel.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemItemViewModelBaseModel } from './FileSystemItemViewModelBaseModel'; - -export type FileSystemFolderModel = FileSystemItemViewModelBaseModel; +export type FileSystemFolderModel = { + path: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemItemResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemItemResponseModelBaseModel.ts deleted file mode 100644 index 6cc0280bfa..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemItemResponseModelBaseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type FileSystemItemResponseModelBaseModel = { - path: string; - name: string; - parent?: FileSystemFolderModel | null; - isFolder: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemItemViewModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemItemViewModelBaseModel.ts deleted file mode 100644 index d0153d4763..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemItemViewModelBaseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type FileSystemItemViewModelBaseModel = { - path: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemRenameRequestModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemRenameRequestModelBaseModel.ts deleted file mode 100644 index bc4534ef58..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemRenameRequestModelBaseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type FileSystemRenameRequestModelBaseModel = { - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemResponseModelBaseModel.ts deleted file mode 100644 index 7d72ab674f..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemResponseModelBaseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { FileSystemFolderModel } from './FileSystemFolderModel'; - -export type FileSystemResponseModelBaseModel = { - path: string; - name: string; - parent?: FileSystemFolderModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemTreeItemPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemTreeItemPresentationModel.ts index 00ca2f7dc8..01486b96aa 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemTreeItemPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FileSystemTreeItemPresentationModel.ts @@ -4,12 +4,12 @@ /* eslint-disable */ import type { FileSystemFolderModel } from './FileSystemFolderModel'; -import type { TreeItemPresentationModel } from './TreeItemPresentationModel'; -export type FileSystemTreeItemPresentationModel = (TreeItemPresentationModel & { +export type FileSystemTreeItemPresentationModel = { + hasChildren: boolean; name: string; path: string; parent?: FileSystemFolderModel | null; isFolder: boolean; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FolderModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FolderModelBaseModel.ts deleted file mode 100644 index 3d9275f495..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FolderModelBaseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type FolderModelBaseModel = { - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FolderResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FolderResponseModel.ts index 3f544cb3e2..01664fd2e4 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FolderResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FolderResponseModel.ts @@ -3,9 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { FolderModelBaseModel } from './FolderModelBaseModel'; - -export type FolderResponseModel = (FolderModelBaseModel & { +export type FolderResponseModel = { + name: string; id: string; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FolderTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FolderTreeItemResponseModel.ts deleted file mode 100644 index 0d2e87e29c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/FolderTreeItemResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { NamedEntityTreeItemResponseModel } from './NamedEntityTreeItemResponseModel'; - -export type FolderTreeItemResponseModel = (NamedEntityTreeItemResponseModel & { - isFolder: boolean; -}); - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupPresentationBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupPresentationBaseModel.ts deleted file mode 100644 index 0fbcac06b9..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupPresentationBaseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type HealthCheckGroupPresentationBaseModel = { - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupPresentationModel.ts index cdeff24d9a..08a8f79b0a 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupPresentationModel.ts @@ -3,10 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { HealthCheckGroupPresentationBaseModel } from './HealthCheckGroupPresentationBaseModel'; import type { HealthCheckModel } from './HealthCheckModel'; -export type HealthCheckGroupPresentationModel = (HealthCheckGroupPresentationBaseModel & { +export type HealthCheckGroupPresentationModel = { + name: string; checks: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupResponseModel.ts index 4754ba19da..d807733fbb 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckGroupResponseModel.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { HealthCheckGroupPresentationBaseModel } from './HealthCheckGroupPresentationBaseModel'; - -export type HealthCheckGroupResponseModel = HealthCheckGroupPresentationBaseModel; +export type HealthCheckGroupResponseModel = { + name: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckModel.ts index 420710c538..4ceadfbc4f 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckModel.ts @@ -3,10 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { HealthCheckModelBaseModel } from './HealthCheckModelBaseModel'; - -export type HealthCheckModel = (HealthCheckModelBaseModel & { +export type HealthCheckModel = { + id: string; name: string; description?: string | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckModelBaseModel.ts deleted file mode 100644 index 0721373257..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckModelBaseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type HealthCheckModelBaseModel = { - id: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckWithResultPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckWithResultPresentationModel.ts index c9e64a9b6c..48b5e80b41 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckWithResultPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/HealthCheckWithResultPresentationModel.ts @@ -3,10 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { HealthCheckModelBaseModel } from './HealthCheckModelBaseModel'; import type { HealthCheckResultResponseModel } from './HealthCheckResultResponseModel'; -export type HealthCheckWithResultPresentationModel = (HealthCheckModelBaseModel & { +export type HealthCheckWithResultPresentationModel = { + id: string; results?: Array | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/InstallRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/InstallRequestModel.ts index 7e1cbeeea5..5b63007859 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/InstallRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/InstallRequestModel.ts @@ -3,14 +3,13 @@ /* tslint:disable */ /* eslint-disable */ -import type { DatabaseInstallPresentationModel } from './DatabaseInstallPresentationModel'; import type { DatabaseInstallRequestModel } from './DatabaseInstallRequestModel'; import type { TelemetryLevelModel } from './TelemetryLevelModel'; -import type { UserInstallPresentationModel } from './UserInstallPresentationModel'; +import type { UserInstallRequestModel } from './UserInstallRequestModel'; export type InstallRequestModel = { - user: UserInstallPresentationModel; - database: (DatabaseInstallPresentationModel | DatabaseInstallRequestModel); + user: UserInstallRequestModel; + database: DatabaseInstallRequestModel; telemetryLevel: TelemetryLevelModel; }; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/InviteUserRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/InviteUserRequestModel.ts index 2d27ef9b07..242f7c1dd6 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/InviteUserRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/InviteUserRequestModel.ts @@ -3,9 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { CreateUserRequestModel } from './CreateUserRequestModel'; - -export type InviteUserRequestModel = (CreateUserRequestModel & { +export type InviteUserRequestModel = { + email: string; + userName: string; + name: string; + userGroupIds: Array; + id?: string | null; message?: string | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ItemResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ItemResponseModelBaseModel.ts deleted file mode 100644 index 28b7c0e199..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ItemResponseModelBaseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ItemResponseModelBaseModel = { - id: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LanguageModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LanguageModelBaseModel.ts deleted file mode 100644 index f05063ce04..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LanguageModelBaseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type LanguageModelBaseModel = { - name: string; - isDefault: boolean; - isMandatory: boolean; - fallbackIsoCode?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LanguageResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LanguageResponseModel.ts index 26700efd0d..89e2b03c92 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LanguageResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/LanguageResponseModel.ts @@ -3,9 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { LanguageModelBaseModel } from './LanguageModelBaseModel'; - -export type LanguageResponseModel = (LanguageModelBaseModel & { +export type LanguageResponseModel = { + name: string; + isDefault: boolean; + isMandatory: boolean; + fallbackIsoCode?: string | null; isoCode: string; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageManifestResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ManifestResponseModel.ts similarity index 82% rename from src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageManifestResponseModel.ts rename to src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ManifestResponseModel.ts index c247a475af..792e0482bb 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageManifestResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ManifestResponseModel.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -export type PackageManifestResponseModel = { +export type ManifestResponseModel = { name: string; version?: string | null; extensions: Array; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaCollectionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaCollectionResponseModel.ts index a28f2123e6..beae6558f5 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaCollectionResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaCollectionResponseModel.ts @@ -3,10 +3,16 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentCollectionResponseModelBaseMediaValueModelMediaVariantResponseModel } from './ContentCollectionResponseModelBaseMediaValueModelMediaVariantResponseModel'; import type { MediaTypeCollectionReferenceResponseModel } from './MediaTypeCollectionReferenceResponseModel'; +import type { MediaValueModel } from './MediaValueModel'; +import type { MediaVariantResponseModel } from './MediaVariantResponseModel'; -export type MediaCollectionResponseModel = (ContentCollectionResponseModelBaseMediaValueModelMediaVariantResponseModel & { +export type MediaCollectionResponseModel = { + values: Array; + variants: Array; + id: string; + creator?: string | null; + sortOrder: number; mediaType: MediaTypeCollectionReferenceResponseModel; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaItemResponseModel.ts index ec38113736..71a85946b8 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaItemResponseModel.ts @@ -3,13 +3,13 @@ /* tslint:disable */ /* eslint-disable */ -import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; import type { MediaTypeReferenceResponseModel } from './MediaTypeReferenceResponseModel'; import type { VariantItemResponseModel } from './VariantItemResponseModel'; -export type MediaItemResponseModel = (ItemResponseModelBaseModel & { +export type MediaItemResponseModel = { + id: string; isTrashed: boolean; mediaType: MediaTypeReferenceResponseModel; variants: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaRecycleBinItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaRecycleBinItemResponseModel.ts index 56467ffbc9..f2c9eea412 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaRecycleBinItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaRecycleBinItemResponseModel.ts @@ -3,12 +3,15 @@ /* tslint:disable */ /* eslint-disable */ +import type { ItemReferenceByIdResponseModel } from './ItemReferenceByIdResponseModel'; import type { MediaTypeReferenceResponseModel } from './MediaTypeReferenceResponseModel'; -import type { RecycleBinItemResponseModelBaseModel } from './RecycleBinItemResponseModelBaseModel'; import type { VariantItemResponseModel } from './VariantItemResponseModel'; -export type MediaRecycleBinItemResponseModel = (RecycleBinItemResponseModelBaseModel & { +export type MediaRecycleBinItemResponseModel = { + id: string; + hasChildren: boolean; + parent?: ItemReferenceByIdResponseModel | null; mediaType: MediaTypeReferenceResponseModel; variants: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaResponseModel.ts index bdc16174e0..ce38706af1 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaResponseModel.ts @@ -3,13 +3,17 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentForMediaResponseModel } from './ContentForMediaResponseModel'; import type { MediaTypeReferenceResponseModel } from './MediaTypeReferenceResponseModel'; import type { MediaUrlInfoModel } from './MediaUrlInfoModel'; +import type { MediaValueModel } from './MediaValueModel'; +import type { MediaVariantResponseModel } from './MediaVariantResponseModel'; -export type MediaResponseModel = (ContentForMediaResponseModel & { +export type MediaResponseModel = { + values: Array; + variants: Array; + id: string; urls: Array; isTrashed: boolean; mediaType: MediaTypeReferenceResponseModel; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTreeItemResponseModel.ts index 24c7fad8f2..38f5c47d32 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTreeItemResponseModel.ts @@ -3,12 +3,17 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTreeItemResponseModel } from './ContentTreeItemResponseModel'; import type { MediaTypeReferenceResponseModel } from './MediaTypeReferenceResponseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; import type { VariantItemResponseModel } from './VariantItemResponseModel'; -export type MediaTreeItemResponseModel = (ContentTreeItemResponseModel & { +export type MediaTreeItemResponseModel = { + hasChildren: boolean; + parent?: ReferenceByIdModel | null; + noAccess: boolean; + isTrashed: boolean; + id: string; mediaType: MediaTypeReferenceResponseModel; variants: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCollectionReferenceResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCollectionReferenceResponseModel.ts index fa9d9718fb..18201c74bd 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCollectionReferenceResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCollectionReferenceResponseModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTypeCollectionReferenceResponseModelBaseModel } from './ContentTypeCollectionReferenceResponseModelBaseModel'; - -export type MediaTypeCollectionReferenceResponseModel = ContentTypeCollectionReferenceResponseModelBaseModel; +export type MediaTypeCollectionReferenceResponseModel = { + id: string; + alias: string; + icon: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCompositionRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCompositionRequestModel.ts index 283f523faa..6926a4c8f0 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCompositionRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCompositionRequestModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTypeCompositionRequestModelBaseModel } from './ContentTypeCompositionRequestModelBaseModel'; - -export type MediaTypeCompositionRequestModel = ContentTypeCompositionRequestModelBaseModel; +export type MediaTypeCompositionRequestModel = { + id?: string | null; + currentPropertyAliases: Array; + currentCompositeIds: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCompositionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCompositionResponseModel.ts index 3068379d6e..9f575248b3 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCompositionResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeCompositionResponseModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTypeCompositionResponseModelBaseModel } from './ContentTypeCompositionResponseModelBaseModel'; - -export type MediaTypeCompositionResponseModel = ContentTypeCompositionResponseModelBaseModel; +export type MediaTypeCompositionResponseModel = { + id: string; + name: string; + icon: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeItemResponseModel.ts index 782e59631a..f06bb0c616 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeItemResponseModel.ts @@ -3,9 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { NamedItemResponseModelBaseModel } from './NamedItemResponseModelBaseModel'; - -export type MediaTypeItemResponseModel = (NamedItemResponseModelBaseModel & { +export type MediaTypeItemResponseModel = { + id: string; + name: string; icon?: string | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts index 8529996e90..7010d27f93 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypePropertyTypeContainerResponseModel.ts @@ -3,7 +3,13 @@ /* tslint:disable */ /* eslint-disable */ -import type { PropertyTypeContainerModelBaseModel } from './PropertyTypeContainerModelBaseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type MediaTypePropertyTypeContainerResponseModel = PropertyTypeContainerModelBaseModel; +export type MediaTypePropertyTypeContainerResponseModel = { + id: string; + parent?: ReferenceByIdModel | null; + name?: string | null; + type: string; + sortOrder: number; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts index 20a8e3efd5..fce0ed3697 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypePropertyTypeResponseModel.ts @@ -3,7 +3,21 @@ /* tslint:disable */ /* eslint-disable */ -import type { PropertyTypeModelBaseModel } from './PropertyTypeModelBaseModel'; +import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; +import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type MediaTypePropertyTypeResponseModel = PropertyTypeModelBaseModel; +export type MediaTypePropertyTypeResponseModel = { + id: string; + container?: ReferenceByIdModel | null; + sortOrder: number; + alias: string; + name: string; + description?: string | null; + dataType: ReferenceByIdModel; + variesByCulture: boolean; + variesBySegment: boolean; + validation: PropertyTypeValidationModel; + appearance: PropertyTypeAppearanceModel; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeReferenceResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeReferenceResponseModel.ts index 5aad862b1b..7c80250be0 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeReferenceResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeReferenceResponseModel.ts @@ -3,7 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTypeReferenceResponseModelBaseModel } from './ContentTypeReferenceResponseModelBaseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type MediaTypeReferenceResponseModel = ContentTypeReferenceResponseModelBaseModel; +export type MediaTypeReferenceResponseModel = { + id: string; + icon: string; + collection?: ReferenceByIdModel | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeResponseModel.ts index a4e5cd2e89..a555ac9333 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeResponseModel.ts @@ -3,12 +3,26 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTypeForMediaTypeResponseModel } from './ContentTypeForMediaTypeResponseModel'; import type { MediaTypeCompositionModel } from './MediaTypeCompositionModel'; +import type { MediaTypePropertyTypeContainerResponseModel } from './MediaTypePropertyTypeContainerResponseModel'; +import type { MediaTypePropertyTypeResponseModel } from './MediaTypePropertyTypeResponseModel'; import type { MediaTypeSortModel } from './MediaTypeSortModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type MediaTypeResponseModel = (ContentTypeForMediaTypeResponseModel & { +export type MediaTypeResponseModel = { + alias: string; + name: string; + description?: string | null; + icon: string; + allowedAsRoot: boolean; + variesByCulture: boolean; + variesBySegment: boolean; + collection?: ReferenceByIdModel | null; + isElement: boolean; + properties: Array; + containers: Array; + id: string; allowedMediaTypes: Array; compositions: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeTreeItemResponseModel.ts index 8455663b94..0b87665e8b 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaTypeTreeItemResponseModel.ts @@ -3,9 +3,14 @@ /* tslint:disable */ /* eslint-disable */ -import type { FolderTreeItemResponseModel } from './FolderTreeItemResponseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type MediaTypeTreeItemResponseModel = (FolderTreeItemResponseModel & { +export type MediaTypeTreeItemResponseModel = { + hasChildren: boolean; + id: string; + parent?: ReferenceByIdModel | null; + name: string; + isFolder: boolean; icon: string; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaUrlInfoModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaUrlInfoModel.ts index 787169ddaf..59052ac8bf 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaUrlInfoModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaUrlInfoModel.ts @@ -3,7 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentUrlInfoBaseModel } from './ContentUrlInfoBaseModel'; - -export type MediaUrlInfoModel = ContentUrlInfoBaseModel; +export type MediaUrlInfoModel = { + culture?: string | null; + url: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaValueModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaValueModel.ts index c65ef62bb0..895901a0ba 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaValueModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaValueModel.ts @@ -3,7 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { ValueModelBaseModel } from './ValueModelBaseModel'; - -export type MediaValueModel = ValueModelBaseModel; +export type MediaValueModel = { + culture?: string | null; + segment?: string | null; + alias: string; + value?: any; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaVariantRequestModel.ts index 8b6bc1f2e4..6ca86fbd75 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaVariantRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaVariantRequestModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { VariantModelBaseModel } from './VariantModelBaseModel'; - -export type MediaVariantRequestModel = VariantModelBaseModel; +export type MediaVariantRequestModel = { + culture?: string | null; + segment?: string | null; + name: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaVariantResponseModel.ts index 5934131d3e..fc5a78cf90 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaVariantResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MediaVariantResponseModel.ts @@ -3,7 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { VariantResponseModelBaseModel } from './VariantResponseModelBaseModel'; - -export type MediaVariantResponseModel = VariantResponseModelBaseModel; +export type MediaVariantResponseModel = { + culture?: string | null; + segment?: string | null; + name: string; + createDate: string; + updateDate: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberGroupItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberGroupItemResponseModel.ts index 690f274951..73d64914d1 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberGroupItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberGroupItemResponseModel.ts @@ -3,7 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { NamedItemResponseModelBaseModel } from './NamedItemResponseModelBaseModel'; - -export type MemberGroupItemResponseModel = NamedItemResponseModelBaseModel; +export type MemberGroupItemResponseModel = { + id: string; + name: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberGroupPresentationBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberGroupPresentationBaseModel.ts deleted file mode 100644 index bebe62bc79..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberGroupPresentationBaseModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type MemberGroupPresentationBaseModel = { - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberGroupResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberGroupResponseModel.ts index 67be1b3394..6488bffe06 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberGroupResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberGroupResponseModel.ts @@ -3,9 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { MemberGroupPresentationBaseModel } from './MemberGroupPresentationBaseModel'; - -export type MemberGroupResponseModel = (MemberGroupPresentationBaseModel & { +export type MemberGroupResponseModel = { + name: string; id: string; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberItemResponseModel.ts index 4fec6f420a..68839f0b2e 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberItemResponseModel.ts @@ -3,12 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { ItemResponseModelBaseModel } from './ItemResponseModelBaseModel'; import type { MemberTypeReferenceResponseModel } from './MemberTypeReferenceResponseModel'; import type { VariantItemResponseModel } from './VariantItemResponseModel'; -export type MemberItemResponseModel = (ItemResponseModelBaseModel & { +export type MemberItemResponseModel = { + id: string; memberType: MemberTypeReferenceResponseModel; variants: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberResponseModel.ts index 3e5680d309..96f4773ecf 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberResponseModel.ts @@ -3,10 +3,14 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentForMemberResponseModel } from './ContentForMemberResponseModel'; import type { MemberTypeReferenceResponseModel } from './MemberTypeReferenceResponseModel'; +import type { MemberValueModel } from './MemberValueModel'; +import type { MemberVariantResponseModel } from './MemberVariantResponseModel'; -export type MemberResponseModel = (ContentForMemberResponseModel & { +export type MemberResponseModel = { + values: Array; + variants: Array; + id: string; email: string; username: string; memberType: MemberTypeReferenceResponseModel; @@ -18,5 +22,5 @@ export type MemberResponseModel = (ContentForMemberResponseModel & { lastLockoutDate?: string | null; lastPasswordChangeDate?: string | null; groups: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeCompositionRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeCompositionRequestModel.ts index 4229739646..ec2d8e6096 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeCompositionRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeCompositionRequestModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTypeCompositionRequestModelBaseModel } from './ContentTypeCompositionRequestModelBaseModel'; - -export type MemberTypeCompositionRequestModel = ContentTypeCompositionRequestModelBaseModel; +export type MemberTypeCompositionRequestModel = { + id?: string | null; + currentPropertyAliases: Array; + currentCompositeIds: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeCompositionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeCompositionResponseModel.ts index 727ed971c6..24766e9f04 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeCompositionResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeCompositionResponseModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTypeCompositionResponseModelBaseModel } from './ContentTypeCompositionResponseModelBaseModel'; - -export type MemberTypeCompositionResponseModel = ContentTypeCompositionResponseModelBaseModel; +export type MemberTypeCompositionResponseModel = { + id: string; + name: string; + icon: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeItemResponseModel.ts index 846b1d2159..6c66cb2c50 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeItemResponseModel.ts @@ -3,9 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { NamedItemResponseModelBaseModel } from './NamedItemResponseModelBaseModel'; - -export type MemberTypeItemResponseModel = (NamedItemResponseModelBaseModel & { +export type MemberTypeItemResponseModel = { + id: string; + name: string; icon?: string | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeContainerResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeContainerResponseModel.ts index 35eabeb2bd..f71c060336 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeContainerResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeContainerResponseModel.ts @@ -3,7 +3,13 @@ /* tslint:disable */ /* eslint-disable */ -import type { PropertyTypeContainerModelBaseModel } from './PropertyTypeContainerModelBaseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type MemberTypePropertyTypeContainerResponseModel = PropertyTypeContainerModelBaseModel; +export type MemberTypePropertyTypeContainerResponseModel = { + id: string; + parent?: ReferenceByIdModel | null; + name?: string | null; + type: string; + sortOrder: number; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeModelBaseModel.ts deleted file mode 100644 index 66b045f08b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeModelBaseModel.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberTypePropertyTypeVisibilityModel } from './MemberTypePropertyTypeVisibilityModel'; -import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; -import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type MemberTypePropertyTypeModelBaseModel = { - id: string; - container?: ReferenceByIdModel | null; - sortOrder: number; - alias: string; - name: string; - description?: string | null; - dataType: ReferenceByIdModel; - variesByCulture: boolean; - variesBySegment: boolean; - validation: PropertyTypeValidationModel; - appearance: PropertyTypeAppearanceModel; - isSensitive: boolean; - visibility: MemberTypePropertyTypeVisibilityModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeResponseModel.ts index 3ab12a7228..31eaefe421 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypePropertyTypeResponseModel.ts @@ -3,7 +3,24 @@ /* tslint:disable */ /* eslint-disable */ -import type { MemberTypePropertyTypeModelBaseModel } from './MemberTypePropertyTypeModelBaseModel'; +import type { MemberTypePropertyTypeVisibilityModel } from './MemberTypePropertyTypeVisibilityModel'; +import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; +import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type MemberTypePropertyTypeResponseModel = MemberTypePropertyTypeModelBaseModel; +export type MemberTypePropertyTypeResponseModel = { + id: string; + container?: ReferenceByIdModel | null; + sortOrder: number; + alias: string; + name: string; + description?: string | null; + dataType: ReferenceByIdModel; + variesByCulture: boolean; + variesBySegment: boolean; + validation: PropertyTypeValidationModel; + appearance: PropertyTypeAppearanceModel; + isSensitive: boolean; + visibility: MemberTypePropertyTypeVisibilityModel; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeReferenceResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeReferenceResponseModel.ts index ae2b46be69..c475116817 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeReferenceResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeReferenceResponseModel.ts @@ -3,7 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTypeReferenceResponseModelBaseModel } from './ContentTypeReferenceResponseModelBaseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type MemberTypeReferenceResponseModel = ContentTypeReferenceResponseModelBaseModel; +export type MemberTypeReferenceResponseModel = { + id: string; + icon: string; + collection?: ReferenceByIdModel | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeResponseModel.ts index dadb181c44..1be5bcb73c 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberTypeResponseModel.ts @@ -3,10 +3,24 @@ /* tslint:disable */ /* eslint-disable */ -import type { ContentTypeForMemberTypeResponseModel } from './ContentTypeForMemberTypeResponseModel'; import type { MemberTypeCompositionModel } from './MemberTypeCompositionModel'; +import type { MemberTypePropertyTypeContainerResponseModel } from './MemberTypePropertyTypeContainerResponseModel'; +import type { MemberTypePropertyTypeResponseModel } from './MemberTypePropertyTypeResponseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type MemberTypeResponseModel = (ContentTypeForMemberTypeResponseModel & { +export type MemberTypeResponseModel = { + alias: string; + name: string; + description?: string | null; + icon: string; + allowedAsRoot: boolean; + variesByCulture: boolean; + variesBySegment: boolean; + collection?: ReferenceByIdModel | null; + isElement: boolean; + properties: Array; + containers: Array; + id: string; compositions: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberValueModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberValueModel.ts index 0d2b1f9893..2aa8c7666e 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberValueModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberValueModel.ts @@ -3,7 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { ValueModelBaseModel } from './ValueModelBaseModel'; - -export type MemberValueModel = ValueModelBaseModel; +export type MemberValueModel = { + culture?: string | null; + segment?: string | null; + alias: string; + value?: any; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberVariantRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberVariantRequestModel.ts index 63ecf05ade..4cac4a6d2f 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberVariantRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberVariantRequestModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { VariantModelBaseModel } from './VariantModelBaseModel'; - -export type MemberVariantRequestModel = VariantModelBaseModel; +export type MemberVariantRequestModel = { + culture?: string | null; + segment?: string | null; + name: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberVariantResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberVariantResponseModel.ts index 015da14f9e..157c54ea08 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberVariantResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MemberVariantResponseModel.ts @@ -3,7 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { VariantResponseModelBaseModel } from './VariantResponseModelBaseModel'; - -export type MemberVariantResponseModel = VariantResponseModelBaseModel; +export type MemberVariantResponseModel = { + culture?: string | null; + segment?: string | null; + name: string; + createDate: string; + updateDate: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublicAccessBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDocumentBlueprintRequestModel.ts similarity index 63% rename from src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublicAccessBaseModel.ts rename to src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDocumentBlueprintRequestModel.ts index a0aba14ef8..f1df4f337e 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublicAccessBaseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/MoveDocumentBlueprintRequestModel.ts @@ -5,8 +5,7 @@ import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type PublicAccessBaseModel = { - loginDocument: ReferenceByIdModel; - errorDocument: ReferenceByIdModel; +export type MoveDocumentBlueprintRequestModel = { + target?: ReferenceByIdModel | null; }; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/NamedEntityTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/NamedEntityTreeItemResponseModel.ts index b46ea3126a..1deec9c6ef 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/NamedEntityTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/NamedEntityTreeItemResponseModel.ts @@ -3,9 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { EntityTreeItemResponseModel } from './EntityTreeItemResponseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type NamedEntityTreeItemResponseModel = (EntityTreeItemResponseModel & { +export type NamedEntityTreeItemResponseModel = { + hasChildren: boolean; + id: string; + parent?: ReferenceByIdModel | null; name: string; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/NamedItemResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/NamedItemResponseModelBaseModel.ts deleted file mode 100644 index d7a2882b2c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/NamedItemResponseModelBaseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type NamedItemResponseModelBaseModel = { - id: string; - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/OkResult.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/OkResult.ts deleted file mode 100644 index a199ea6e61..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/OkResult.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type OkResult = { - statusCode: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageDefinitionResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageDefinitionResponseModel.ts index f5248ab237..87ae43326b 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageDefinitionResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageDefinitionResponseModel.ts @@ -3,10 +3,22 @@ /* tslint:disable */ /* eslint-disable */ -import type { PackageModelBaseModel } from './PackageModelBaseModel'; - -export type PackageDefinitionResponseModel = (PackageModelBaseModel & { +export type PackageDefinitionResponseModel = { + name: string; + contentNodeId?: string | null; + contentLoadChildNodes: boolean; + mediaIds: Array; + mediaLoadChildNodes: boolean; + documentTypes: Array; + mediaTypes: Array; + dataTypes: Array; + templates: Array; + partialViews: Array; + stylesheets: Array; + scripts: Array; + languages: Array; + dictionaryItems: Array; id: string; packagePath: string; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageModelBaseModel.ts deleted file mode 100644 index 71ee36a68b..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PackageModelBaseModel.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type PackageModelBaseModel = { - name: string; - contentNodeId?: string | null; - contentLoadChildNodes: boolean; - mediaIds: Array; - mediaLoadChildNodes: boolean; - documentTypes: Array; - mediaTypes: Array; - dataTypes: Array; - templates: Array; - partialViews: Array; - stylesheets: Array; - scripts: Array; - languages: Array; - dictionaryItems: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedNamedEntityTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedNamedEntityTreeItemResponseModel.ts index c42a7ab504..9e6dd22dec 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedNamedEntityTreeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedNamedEntityTreeItemResponseModel.ts @@ -3,16 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { DataTypeTreeItemResponseModel } from './DataTypeTreeItemResponseModel'; -import type { DocumentBlueprintTreeItemResponseModel } from './DocumentBlueprintTreeItemResponseModel'; -import type { DocumentTypeTreeItemResponseModel } from './DocumentTypeTreeItemResponseModel'; -import type { FolderTreeItemResponseModel } from './FolderTreeItemResponseModel'; -import type { MediaTypeTreeItemResponseModel } from './MediaTypeTreeItemResponseModel'; import type { NamedEntityTreeItemResponseModel } from './NamedEntityTreeItemResponseModel'; -import type { RelationTypeTreeItemResponseModel } from './RelationTypeTreeItemResponseModel'; export type PagedNamedEntityTreeItemResponseModel = { total: number; - items: Array<(NamedEntityTreeItemResponseModel | DataTypeTreeItemResponseModel | DocumentBlueprintTreeItemResponseModel | DocumentTypeTreeItemResponseModel | FolderTreeItemResponseModel | MediaTypeTreeItemResponseModel | RelationTypeTreeItemResponseModel)>; + items: Array; }; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedPartialViewSnippetItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedPartialViewSnippetItemResponseModel.ts index 0c0746288c..4292c1a083 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedPartialViewSnippetItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PagedPartialViewSnippetItemResponseModel.ts @@ -4,10 +4,9 @@ /* eslint-disable */ import type { PartialViewSnippetItemResponseModel } from './PartialViewSnippetItemResponseModel'; -import type { PartialViewSnippetResponseModel } from './PartialViewSnippetResponseModel'; export type PagedPartialViewSnippetItemResponseModel = { total: number; - items: Array<(PartialViewSnippetItemResponseModel | PartialViewSnippetResponseModel)>; + items: Array; }; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewFolderResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewFolderResponseModel.ts index b43f9b3618..58729a2f6f 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewFolderResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewFolderResponseModel.ts @@ -3,7 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemResponseModelBaseModel } from './FileSystemResponseModelBaseModel'; +import type { FileSystemFolderModel } from './FileSystemFolderModel'; -export type PartialViewFolderResponseModel = FileSystemResponseModelBaseModel; +export type PartialViewFolderResponseModel = { + path: string; + name: string; + parent?: FileSystemFolderModel | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewItemResponseModel.ts index 0e02db6975..eabd0ebafd 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewItemResponseModel.ts @@ -3,7 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemItemResponseModelBaseModel } from './FileSystemItemResponseModelBaseModel'; +import type { FileSystemFolderModel } from './FileSystemFolderModel'; -export type PartialViewItemResponseModel = FileSystemItemResponseModelBaseModel; +export type PartialViewItemResponseModel = { + path: string; + name: string; + parent?: FileSystemFolderModel | null; + isFolder: boolean; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewResponseModel.ts index 1918d146c2..8ad71fa4a2 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewResponseModel.ts @@ -3,7 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemFileResponseModelBaseModel } from './FileSystemFileResponseModelBaseModel'; +import type { FileSystemFolderModel } from './FileSystemFolderModel'; -export type PartialViewResponseModel = FileSystemFileResponseModelBaseModel; +export type PartialViewResponseModel = { + path: string; + name: string; + parent?: FileSystemFolderModel | null; + content: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewSnippetResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewSnippetResponseModel.ts index 5937fb3414..7a9ef1d406 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewSnippetResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PartialViewSnippetResponseModel.ts @@ -3,9 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { PartialViewSnippetItemResponseModel } from './PartialViewSnippetItemResponseModel'; - -export type PartialViewSnippetResponseModel = (PartialViewSnippetItemResponseModel & { +export type PartialViewSnippetResponseModel = { + id: string; + name: string; content: string; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PropertyTypeContainerModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PropertyTypeContainerModelBaseModel.ts deleted file mode 100644 index 6009b9eefb..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PropertyTypeContainerModelBaseModel.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type PropertyTypeContainerModelBaseModel = { - id: string; - parent?: ReferenceByIdModel | null; - name?: string | null; - type: string; - sortOrder: number; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PropertyTypeModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PropertyTypeModelBaseModel.ts deleted file mode 100644 index 46d414389d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PropertyTypeModelBaseModel.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; -import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; - -export type PropertyTypeModelBaseModel = { - id: string; - container?: ReferenceByIdModel | null; - sortOrder: number; - alias: string; - name: string; - description?: string | null; - dataType: ReferenceByIdModel; - variesByCulture: boolean; - variesBySegment: boolean; - validation: PropertyTypeValidationModel; - appearance: PropertyTypeAppearanceModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublicAccessRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublicAccessRequestModel.ts index 60f518c835..d0381e1f21 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublicAccessRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublicAccessRequestModel.ts @@ -3,10 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { PublicAccessBaseModel } from './PublicAccessBaseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type PublicAccessRequestModel = (PublicAccessBaseModel & { +export type PublicAccessRequestModel = { + loginDocument: ReferenceByIdModel; + errorDocument: ReferenceByIdModel; memberUserNames: Array; memberGroupNames: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublicAccessResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublicAccessResponseModel.ts deleted file mode 100644 index f6b2145385..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/PublicAccessResponseModel.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberGroupItemResponseModel } from './MemberGroupItemResponseModel'; -import type { MemberItemResponseModel } from './MemberItemResponseModel'; -import type { PublicAccessBaseModel } from './PublicAccessBaseModel'; - -export type PublicAccessResponseModel = (PublicAccessBaseModel & { - members: Array; - groups: Array; -}); - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RecycleBinItemResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RecycleBinItemResponseModelBaseModel.ts deleted file mode 100644 index 33493007b2..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RecycleBinItemResponseModelBaseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ItemReferenceByIdResponseModel } from './ItemReferenceByIdResponseModel'; - -export type RecycleBinItemResponseModelBaseModel = { - id: string; - hasChildren: boolean; - parent?: ItemReferenceByIdResponseModel | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeBaseModel.ts deleted file mode 100644 index db102160d3..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeBaseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type RelationTypeBaseModel = { - name: string; - isBidirectional: boolean; - isDependency: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeItemResponseModel.ts index 1f9bcdfe1e..0d0bbfd99e 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeItemResponseModel.ts @@ -3,9 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { NamedItemResponseModelBaseModel } from './NamedItemResponseModelBaseModel'; - -export type RelationTypeItemResponseModel = (NamedItemResponseModelBaseModel & { +export type RelationTypeItemResponseModel = { + id: string; + name: string; isDeletable: boolean; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeResponseModel.ts index 9f6eafd317..05d5eadf9f 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeResponseModel.ts @@ -4,12 +4,14 @@ /* eslint-disable */ import type { ObjectTypeResponseModel } from './ObjectTypeResponseModel'; -import type { RelationTypeBaseModel } from './RelationTypeBaseModel'; -export type RelationTypeResponseModel = (RelationTypeBaseModel & { +export type RelationTypeResponseModel = { + name: string; + isBidirectional: boolean; + isDependency: boolean; id: string; alias?: string | null; parentObject?: ObjectTypeResponseModel | null; childObject?: ObjectTypeResponseModel | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeTreeItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeTreeItemResponseModel.ts deleted file mode 100644 index c1c4ce7465..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RelationTypeTreeItemResponseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { NamedEntityTreeItemResponseModel } from './NamedEntityTreeItemResponseModel'; - -export type RelationTypeTreeItemResponseModel = (NamedEntityTreeItemResponseModel & { - isDeletable: boolean; -}); - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenamePartialViewRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenamePartialViewRequestModel.ts index 73d12f36fb..7fc3f67271 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenamePartialViewRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenamePartialViewRequestModel.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemRenameRequestModelBaseModel } from './FileSystemRenameRequestModelBaseModel'; - -export type RenamePartialViewRequestModel = FileSystemRenameRequestModelBaseModel; +export type RenamePartialViewRequestModel = { + name: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenameScriptRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenameScriptRequestModel.ts index cb578affc0..0d7a9af13f 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenameScriptRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenameScriptRequestModel.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemRenameRequestModelBaseModel } from './FileSystemRenameRequestModelBaseModel'; - -export type RenameScriptRequestModel = FileSystemRenameRequestModelBaseModel; +export type RenameScriptRequestModel = { + name: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenameStylesheetRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenameStylesheetRequestModel.ts index 6af9564ff7..44165fb93e 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenameStylesheetRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/RenameStylesheetRequestModel.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemRenameRequestModelBaseModel } from './FileSystemRenameRequestModelBaseModel'; - -export type RenameStylesheetRequestModel = FileSystemRenameRequestModelBaseModel; +export type RenameStylesheetRequestModel = { + name: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ResetPasswordTokenRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ResetPasswordTokenRequestModel.ts index 513669862d..e291336f61 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ResetPasswordTokenRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ResetPasswordTokenRequestModel.ts @@ -3,9 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { VerifyResetPasswordTokenRequestModel } from './VerifyResetPasswordTokenRequestModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type ResetPasswordTokenRequestModel = (VerifyResetPasswordTokenRequestModel & { +export type ResetPasswordTokenRequestModel = { + user: ReferenceByIdModel; + resetCode: string; password: string; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SavedLogSearchPresenationBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SavedLogSearchPresenationBaseModel.ts deleted file mode 100644 index 8e8e032cf0..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SavedLogSearchPresenationBaseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type SavedLogSearchPresenationBaseModel = { - name: string; - query: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SavedLogSearchRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SavedLogSearchRequestModel.ts index c73ea6edcf..a9a6db7caf 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SavedLogSearchRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SavedLogSearchRequestModel.ts @@ -3,7 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { SavedLogSearchPresenationBaseModel } from './SavedLogSearchPresenationBaseModel'; - -export type SavedLogSearchRequestModel = SavedLogSearchPresenationBaseModel; +export type SavedLogSearchRequestModel = { + name: string; + query: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SavedLogSearchResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SavedLogSearchResponseModel.ts index 764e26b616..7544779e07 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SavedLogSearchResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SavedLogSearchResponseModel.ts @@ -3,7 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { SavedLogSearchPresenationBaseModel } from './SavedLogSearchPresenationBaseModel'; - -export type SavedLogSearchResponseModel = SavedLogSearchPresenationBaseModel; +export type SavedLogSearchResponseModel = { + name: string; + query: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptFolderResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptFolderResponseModel.ts index c1c41eee88..154bfb8359 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptFolderResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptFolderResponseModel.ts @@ -3,7 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemResponseModelBaseModel } from './FileSystemResponseModelBaseModel'; +import type { FileSystemFolderModel } from './FileSystemFolderModel'; -export type ScriptFolderResponseModel = FileSystemResponseModelBaseModel; +export type ScriptFolderResponseModel = { + path: string; + name: string; + parent?: FileSystemFolderModel | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptItemResponseModel.ts index 714d81db7d..6d74d3170e 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptItemResponseModel.ts @@ -3,7 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemItemResponseModelBaseModel } from './FileSystemItemResponseModelBaseModel'; +import type { FileSystemFolderModel } from './FileSystemFolderModel'; -export type ScriptItemResponseModel = FileSystemItemResponseModelBaseModel; +export type ScriptItemResponseModel = { + path: string; + name: string; + parent?: FileSystemFolderModel | null; + isFolder: boolean; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptResponseModel.ts index 789b07ca28..c55092587d 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ScriptResponseModel.ts @@ -3,7 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemFileResponseModelBaseModel } from './FileSystemFileResponseModelBaseModel'; +import type { FileSystemFolderModel } from './FileSystemFolderModel'; -export type ScriptResponseModel = FileSystemFileResponseModelBaseModel; +export type ScriptResponseModel = { + path: string; + name: string; + parent?: FileSystemFolderModel | null; + content: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerConfigurationBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerConfigurationBaseModel.ts deleted file mode 100644 index 0192f50c80..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerConfigurationBaseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ServerConfigurationItemResponseModel } from './ServerConfigurationItemResponseModel'; - -export type ServerConfigurationBaseModel = { - items: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerTroubleshootingResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerTroubleshootingResponseModel.ts index f46e4202ff..54a020dd94 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerTroubleshootingResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ServerTroubleshootingResponseModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { ServerConfigurationBaseModel } from './ServerConfigurationBaseModel'; +import type { ServerConfigurationItemResponseModel } from './ServerConfigurationItemResponseModel'; -export type ServerTroubleshootingResponseModel = ServerConfigurationBaseModel; +export type ServerTroubleshootingResponseModel = { + items: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SetTourStatusRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SetTourStatusRequestModel.ts index b92400222f..b766154055 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SetTourStatusRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/SetTourStatusRequestModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { TourStatusModel } from './TourStatusModel'; - -export type SetTourStatusRequestModel = TourStatusModel; +export type SetTourStatusRequestModel = { + alias: string; + completed: boolean; + disabled: boolean; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StaticFileItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StaticFileItemResponseModel.ts index 2ad2984074..1d47aa6e4f 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StaticFileItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StaticFileItemResponseModel.ts @@ -3,7 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemItemResponseModelBaseModel } from './FileSystemItemResponseModelBaseModel'; +import type { FileSystemFolderModel } from './FileSystemFolderModel'; -export type StaticFileItemResponseModel = FileSystemItemResponseModelBaseModel; +export type StaticFileItemResponseModel = { + path: string; + name: string; + parent?: FileSystemFolderModel | null; + isFolder: boolean; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetFolderResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetFolderResponseModel.ts index 3c0fda4061..608989b702 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetFolderResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetFolderResponseModel.ts @@ -3,7 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemResponseModelBaseModel } from './FileSystemResponseModelBaseModel'; +import type { FileSystemFolderModel } from './FileSystemFolderModel'; -export type StylesheetFolderResponseModel = FileSystemResponseModelBaseModel; +export type StylesheetFolderResponseModel = { + path: string; + name: string; + parent?: FileSystemFolderModel | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetItemResponseModel.ts index c4b7d817c6..02d537cef6 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetItemResponseModel.ts @@ -3,7 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemItemResponseModelBaseModel } from './FileSystemItemResponseModelBaseModel'; +import type { FileSystemFolderModel } from './FileSystemFolderModel'; -export type StylesheetItemResponseModel = FileSystemItemResponseModelBaseModel; +export type StylesheetItemResponseModel = { + path: string; + name: string; + parent?: FileSystemFolderModel | null; + isFolder: boolean; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetResponseModel.ts index e32e8f2d74..8ec024c10d 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/StylesheetResponseModel.ts @@ -3,7 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemFileResponseModelBaseModel } from './FileSystemFileResponseModelBaseModel'; +import type { FileSystemFolderModel } from './FileSystemFolderModel'; -export type StylesheetResponseModel = FileSystemFileResponseModelBaseModel; +export type StylesheetResponseModel = { + path: string; + name: string; + parent?: FileSystemFolderModel | null; + content: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryRepresentationBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryRepresentationBaseModel.ts deleted file mode 100644 index fb7b6286a9..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryRepresentationBaseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { TelemetryLevelModel } from './TelemetryLevelModel'; - -export type TelemetryRepresentationBaseModel = { - telemetryLevel: TelemetryLevelModel; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryRequestModel.ts index 4038ab5922..51e086f3e8 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryRequestModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { TelemetryRepresentationBaseModel } from './TelemetryRepresentationBaseModel'; +import type { TelemetryLevelModel } from './TelemetryLevelModel'; -export type TelemetryRequestModel = TelemetryRepresentationBaseModel; +export type TelemetryRequestModel = { + telemetryLevel: TelemetryLevelModel; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryResponseModel.ts index 6845564be7..cf83a280a0 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TelemetryResponseModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { TelemetryRepresentationBaseModel } from './TelemetryRepresentationBaseModel'; +import type { TelemetryLevelModel } from './TelemetryLevelModel'; -export type TelemetryResponseModel = TelemetryRepresentationBaseModel; +export type TelemetryResponseModel = { + telemetryLevel: TelemetryLevelModel; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateItemResponseModel.ts index dc6a62ed51..caab43c55f 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateItemResponseModel.ts @@ -3,9 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { NamedItemResponseModelBaseModel } from './NamedItemResponseModelBaseModel'; - -export type TemplateItemResponseModel = (NamedItemResponseModelBaseModel & { +export type TemplateItemResponseModel = { + id: string; + name: string; alias: string; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateModelBaseModel.ts deleted file mode 100644 index 788f0cfcd9..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateModelBaseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type TemplateModelBaseModel = { - name: string; - alias: string; - content?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateResponseModel.ts index dab1be928a..3f9925fa3d 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TemplateResponseModel.ts @@ -4,10 +4,12 @@ /* eslint-disable */ import type { ReferenceByIdModel } from './ReferenceByIdModel'; -import type { TemplateModelBaseModel } from './TemplateModelBaseModel'; -export type TemplateResponseModel = (TemplateModelBaseModel & { +export type TemplateResponseModel = { + name: string; + alias: string; + content?: string | null; id: string; masterTemplate?: ReferenceByIdModel | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TrackedReferenceContentTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TrackedReferenceContentTypeModel.ts deleted file mode 100644 index 3c5d0602c5..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TrackedReferenceContentTypeModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type TrackedReferenceContentTypeModel = { - icon?: string | null; - alias?: string | null; - name?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TrackedReferenceDocumentTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TrackedReferenceDocumentTypeModel.ts index bf4b1bee03..d6db0e12e0 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TrackedReferenceDocumentTypeModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TrackedReferenceDocumentTypeModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { TrackedReferenceContentTypeModel } from './TrackedReferenceContentTypeModel'; - -export type TrackedReferenceDocumentTypeModel = TrackedReferenceContentTypeModel; +export type TrackedReferenceDocumentTypeModel = { + icon?: string | null; + alias?: string | null; + name?: string | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TrackedReferenceMediaTypeModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TrackedReferenceMediaTypeModel.ts index d8b64564ea..41c533bbf1 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TrackedReferenceMediaTypeModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TrackedReferenceMediaTypeModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { TrackedReferenceContentTypeModel } from './TrackedReferenceContentTypeModel'; - -export type TrackedReferenceMediaTypeModel = TrackedReferenceContentTypeModel; +export type TrackedReferenceMediaTypeModel = { + icon?: string | null; + alias?: string | null; + name?: string | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TreeItemPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TreeItemPresentationModel.ts deleted file mode 100644 index 3f84670b27..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/TreeItemPresentationModel.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type TreeItemPresentationModel = { - hasChildren: boolean; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentForDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentForDocumentRequestModel.ts deleted file mode 100644 index 914404a689..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentForDocumentRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentValueModel } from './DocumentValueModel'; -import type { DocumentVariantRequestModel } from './DocumentVariantRequestModel'; - -export type UpdateContentForDocumentRequestModel = { - values: Array; - variants: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentForMediaRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentForMediaRequestModel.ts deleted file mode 100644 index 9abbcea7e2..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentForMediaRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MediaValueModel } from './MediaValueModel'; -import type { MediaVariantRequestModel } from './MediaVariantRequestModel'; - -export type UpdateContentForMediaRequestModel = { - values: Array; - variants: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentForMemberRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentForMemberRequestModel.ts deleted file mode 100644 index e25be5f883..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentForMemberRequestModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { MemberValueModel } from './MemberValueModel'; -import type { MemberVariantRequestModel } from './MemberVariantRequestModel'; - -export type UpdateContentForMemberRequestModel = { - values: Array; - variants: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentTypeForDocumentTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentTypeForDocumentTypeRequestModel.ts deleted file mode 100644 index 55e6966d8c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentTypeForDocumentTypeRequestModel.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; -import type { UpdateDocumentTypePropertyTypeContainerRequestModel } from './UpdateDocumentTypePropertyTypeContainerRequestModel'; -import type { UpdateDocumentTypePropertyTypeRequestModel } from './UpdateDocumentTypePropertyTypeRequestModel'; - -export type UpdateContentTypeForDocumentTypeRequestModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - collection?: ReferenceByIdModel | null; - isElement: boolean; - properties: Array; - containers: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentTypeForMediaTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentTypeForMediaTypeRequestModel.ts deleted file mode 100644 index 6edc724854..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentTypeForMediaTypeRequestModel.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; -import type { UpdateMediaTypePropertyTypeContainerRequestModel } from './UpdateMediaTypePropertyTypeContainerRequestModel'; -import type { UpdateMediaTypePropertyTypeRequestModel } from './UpdateMediaTypePropertyTypeRequestModel'; - -export type UpdateContentTypeForMediaTypeRequestModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - collection?: ReferenceByIdModel | null; - isElement: boolean; - properties: Array; - containers: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentTypeForMemberTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentTypeForMemberTypeRequestModel.ts deleted file mode 100644 index 6e32bbb080..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateContentTypeForMemberTypeRequestModel.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { ReferenceByIdModel } from './ReferenceByIdModel'; -import type { UpdateMemberTypePropertyTypeContainerRequestModel } from './UpdateMemberTypePropertyTypeContainerRequestModel'; -import type { UpdateMemberTypePropertyTypeRequestModel } from './UpdateMemberTypePropertyTypeRequestModel'; - -export type UpdateContentTypeForMemberTypeRequestModel = { - alias: string; - name: string; - description?: string | null; - icon: string; - allowedAsRoot: boolean; - variesByCulture: boolean; - variesBySegment: boolean; - collection?: ReferenceByIdModel | null; - isElement: boolean; - properties: Array; - containers: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDataTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDataTypeRequestModel.ts index 635cf63785..43323378ff 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDataTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDataTypeRequestModel.ts @@ -3,7 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { DataTypeModelBaseModel } from './DataTypeModelBaseModel'; +import type { DataTypePropertyPresentationModel } from './DataTypePropertyPresentationModel'; -export type UpdateDataTypeRequestModel = DataTypeModelBaseModel; +export type UpdateDataTypeRequestModel = { + name: string; + editorAlias: string; + editorUiAlias?: string | null; + values: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDictionaryItemRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDictionaryItemRequestModel.ts index 1348c0ca10..5381933ff4 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDictionaryItemRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDictionaryItemRequestModel.ts @@ -3,7 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { DictionaryItemModelBaseModel } from './DictionaryItemModelBaseModel'; +import type { DictionaryItemTranslationModel } from './DictionaryItemTranslationModel'; -export type UpdateDictionaryItemRequestModel = DictionaryItemModelBaseModel; +export type UpdateDictionaryItemRequestModel = { + name: string; + translations: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentBlueprintRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentBlueprintRequestModel.ts index 77e39bc70d..0eb5028bac 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentBlueprintRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentBlueprintRequestModel.ts @@ -3,7 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { UpdateContentForDocumentRequestModel } from './UpdateContentForDocumentRequestModel'; +import type { DocumentValueModel } from './DocumentValueModel'; +import type { DocumentVariantRequestModel } from './DocumentVariantRequestModel'; -export type UpdateDocumentBlueprintRequestModel = UpdateContentForDocumentRequestModel; +export type UpdateDocumentBlueprintRequestModel = { + values: Array; + variants: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentRequestModel.ts index 75b04656c5..49443c7267 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentRequestModel.ts @@ -3,10 +3,13 @@ /* tslint:disable */ /* eslint-disable */ +import type { DocumentValueModel } from './DocumentValueModel'; +import type { DocumentVariantRequestModel } from './DocumentVariantRequestModel'; import type { ReferenceByIdModel } from './ReferenceByIdModel'; -import type { UpdateContentForDocumentRequestModel } from './UpdateContentForDocumentRequestModel'; -export type UpdateDocumentRequestModel = (UpdateContentForDocumentRequestModel & { +export type UpdateDocumentRequestModel = { + values: Array; + variants: Array; template?: ReferenceByIdModel | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypePropertyTypeContainerRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypePropertyTypeContainerRequestModel.ts index a5b9b39f26..31df6c2e24 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypePropertyTypeContainerRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypePropertyTypeContainerRequestModel.ts @@ -3,7 +3,13 @@ /* tslint:disable */ /* eslint-disable */ -import type { PropertyTypeContainerModelBaseModel } from './PropertyTypeContainerModelBaseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type UpdateDocumentTypePropertyTypeContainerRequestModel = PropertyTypeContainerModelBaseModel; +export type UpdateDocumentTypePropertyTypeContainerRequestModel = { + id: string; + parent?: ReferenceByIdModel | null; + name?: string | null; + type: string; + sortOrder: number; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypePropertyTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypePropertyTypeRequestModel.ts index ef34f46fe6..cb01572972 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypePropertyTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypePropertyTypeRequestModel.ts @@ -3,7 +3,21 @@ /* tslint:disable */ /* eslint-disable */ -import type { PropertyTypeModelBaseModel } from './PropertyTypeModelBaseModel'; +import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; +import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type UpdateDocumentTypePropertyTypeRequestModel = PropertyTypeModelBaseModel; +export type UpdateDocumentTypePropertyTypeRequestModel = { + id: string; + container?: ReferenceByIdModel | null; + sortOrder: number; + alias: string; + name: string; + description?: string | null; + dataType: ReferenceByIdModel; + variesByCulture: boolean; + variesBySegment: boolean; + validation: PropertyTypeValidationModel; + appearance: PropertyTypeAppearanceModel; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypeRequestModel.ts index b7ee352bb0..1f1d8977b7 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDocumentTypeRequestModel.ts @@ -7,13 +7,25 @@ import type { DocumentTypeCleanupModel } from './DocumentTypeCleanupModel'; import type { DocumentTypeCompositionModel } from './DocumentTypeCompositionModel'; import type { DocumentTypeSortModel } from './DocumentTypeSortModel'; import type { ReferenceByIdModel } from './ReferenceByIdModel'; -import type { UpdateContentTypeForDocumentTypeRequestModel } from './UpdateContentTypeForDocumentTypeRequestModel'; +import type { UpdateDocumentTypePropertyTypeContainerRequestModel } from './UpdateDocumentTypePropertyTypeContainerRequestModel'; +import type { UpdateDocumentTypePropertyTypeRequestModel } from './UpdateDocumentTypePropertyTypeRequestModel'; -export type UpdateDocumentTypeRequestModel = (UpdateContentTypeForDocumentTypeRequestModel & { +export type UpdateDocumentTypeRequestModel = { + alias: string; + name: string; + description?: string | null; + icon: string; + allowedAsRoot: boolean; + variesByCulture: boolean; + variesBySegment: boolean; + collection?: ReferenceByIdModel | null; + isElement: boolean; + properties: Array; + containers: Array; allowedTemplates: Array; defaultTemplate?: ReferenceByIdModel | null; cleanup: DocumentTypeCleanupModel; allowedDocumentTypes: Array; compositions: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDomainsRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDomainsRequestModel.ts index 2b35548f52..a5954d9801 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDomainsRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateDomainsRequestModel.ts @@ -3,7 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { DomainsPresentationModelBaseModel } from './DomainsPresentationModelBaseModel'; +import type { DomainPresentationModel } from './DomainPresentationModel'; -export type UpdateDomainsRequestModel = DomainsPresentationModelBaseModel; +export type UpdateDomainsRequestModel = { + defaultIsoCode?: string | null; + domains: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateFolderResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateFolderResponseModel.ts index d5efa20832..dcac13e4fd 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateFolderResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateFolderResponseModel.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { FolderModelBaseModel } from './FolderModelBaseModel'; - -export type UpdateFolderResponseModel = FolderModelBaseModel; +export type UpdateFolderResponseModel = { + name: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateLanguageRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateLanguageRequestModel.ts index 9b4c7f6c2a..55a440a3c7 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateLanguageRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateLanguageRequestModel.ts @@ -3,7 +3,10 @@ /* tslint:disable */ /* eslint-disable */ -import type { LanguageModelBaseModel } from './LanguageModelBaseModel'; - -export type UpdateLanguageRequestModel = LanguageModelBaseModel; +export type UpdateLanguageRequestModel = { + name: string; + isDefault: boolean; + isMandatory: boolean; + fallbackIsoCode?: string | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaRequestModel.ts index 66f8fcd3ca..0942d3f2c5 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaRequestModel.ts @@ -3,7 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { UpdateContentForMediaRequestModel } from './UpdateContentForMediaRequestModel'; +import type { MediaValueModel } from './MediaValueModel'; +import type { MediaVariantRequestModel } from './MediaVariantRequestModel'; -export type UpdateMediaRequestModel = UpdateContentForMediaRequestModel; +export type UpdateMediaRequestModel = { + values: Array; + variants: Array; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypePropertyTypeContainerRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypePropertyTypeContainerRequestModel.ts index 784c0540ad..79933cd4d3 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypePropertyTypeContainerRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypePropertyTypeContainerRequestModel.ts @@ -3,7 +3,13 @@ /* tslint:disable */ /* eslint-disable */ -import type { PropertyTypeContainerModelBaseModel } from './PropertyTypeContainerModelBaseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type UpdateMediaTypePropertyTypeContainerRequestModel = PropertyTypeContainerModelBaseModel; +export type UpdateMediaTypePropertyTypeContainerRequestModel = { + id: string; + parent?: ReferenceByIdModel | null; + name?: string | null; + type: string; + sortOrder: number; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypePropertyTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypePropertyTypeRequestModel.ts index 01c5dca483..43734493c3 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypePropertyTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypePropertyTypeRequestModel.ts @@ -3,7 +3,21 @@ /* tslint:disable */ /* eslint-disable */ -import type { PropertyTypeModelBaseModel } from './PropertyTypeModelBaseModel'; +import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; +import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type UpdateMediaTypePropertyTypeRequestModel = PropertyTypeModelBaseModel; +export type UpdateMediaTypePropertyTypeRequestModel = { + id: string; + container?: ReferenceByIdModel | null; + sortOrder: number; + alias: string; + name: string; + description?: string | null; + dataType: ReferenceByIdModel; + variesByCulture: boolean; + variesBySegment: boolean; + validation: PropertyTypeValidationModel; + appearance: PropertyTypeAppearanceModel; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypeRequestModel.ts index 25341fe97d..ae89525593 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMediaTypeRequestModel.ts @@ -5,10 +5,23 @@ import type { MediaTypeCompositionModel } from './MediaTypeCompositionModel'; import type { MediaTypeSortModel } from './MediaTypeSortModel'; -import type { UpdateContentTypeForMediaTypeRequestModel } from './UpdateContentTypeForMediaTypeRequestModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; +import type { UpdateMediaTypePropertyTypeContainerRequestModel } from './UpdateMediaTypePropertyTypeContainerRequestModel'; +import type { UpdateMediaTypePropertyTypeRequestModel } from './UpdateMediaTypePropertyTypeRequestModel'; -export type UpdateMediaTypeRequestModel = (UpdateContentTypeForMediaTypeRequestModel & { +export type UpdateMediaTypeRequestModel = { + alias: string; + name: string; + description?: string | null; + icon: string; + allowedAsRoot: boolean; + variesByCulture: boolean; + variesBySegment: boolean; + collection?: ReferenceByIdModel | null; + isElement: boolean; + properties: Array; + containers: Array; allowedMediaTypes: Array; compositions: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberGroupRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberGroupRequestModel.ts index 18b082fb02..85d416d3f6 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberGroupRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberGroupRequestModel.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { MemberGroupPresentationBaseModel } from './MemberGroupPresentationBaseModel'; - -export type UpdateMemberGroupRequestModel = MemberGroupPresentationBaseModel; +export type UpdateMemberGroupRequestModel = { + name: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberRequestModel.ts index 18dc534391..02bd5edebb 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberRequestModel.ts @@ -3,9 +3,12 @@ /* tslint:disable */ /* eslint-disable */ -import type { UpdateContentForMemberRequestModel } from './UpdateContentForMemberRequestModel'; +import type { MemberValueModel } from './MemberValueModel'; +import type { MemberVariantRequestModel } from './MemberVariantRequestModel'; -export type UpdateMemberRequestModel = (UpdateContentForMemberRequestModel & { +export type UpdateMemberRequestModel = { + values: Array; + variants: Array; email: string; username: string; oldPassword?: string | null; @@ -14,5 +17,5 @@ export type UpdateMemberRequestModel = (UpdateContentForMemberRequestModel & { isApproved: boolean; isLockedOut: boolean; isTwoFactorEnabled: boolean; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypePropertyTypeContainerRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypePropertyTypeContainerRequestModel.ts index effedf5625..051e32c2a3 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypePropertyTypeContainerRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypePropertyTypeContainerRequestModel.ts @@ -3,7 +3,13 @@ /* tslint:disable */ /* eslint-disable */ -import type { PropertyTypeContainerModelBaseModel } from './PropertyTypeContainerModelBaseModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type UpdateMemberTypePropertyTypeContainerRequestModel = PropertyTypeContainerModelBaseModel; +export type UpdateMemberTypePropertyTypeContainerRequestModel = { + id: string; + parent?: ReferenceByIdModel | null; + name?: string | null; + type: string; + sortOrder: number; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypePropertyTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypePropertyTypeRequestModel.ts index f25dbc33e8..2c5d224e14 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypePropertyTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypePropertyTypeRequestModel.ts @@ -3,7 +3,24 @@ /* tslint:disable */ /* eslint-disable */ -import type { MemberTypePropertyTypeModelBaseModel } from './MemberTypePropertyTypeModelBaseModel'; +import type { MemberTypePropertyTypeVisibilityModel } from './MemberTypePropertyTypeVisibilityModel'; +import type { PropertyTypeAppearanceModel } from './PropertyTypeAppearanceModel'; +import type { PropertyTypeValidationModel } from './PropertyTypeValidationModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; -export type UpdateMemberTypePropertyTypeRequestModel = MemberTypePropertyTypeModelBaseModel; +export type UpdateMemberTypePropertyTypeRequestModel = { + id: string; + container?: ReferenceByIdModel | null; + sortOrder: number; + alias: string; + name: string; + description?: string | null; + dataType: ReferenceByIdModel; + variesByCulture: boolean; + variesBySegment: boolean; + validation: PropertyTypeValidationModel; + appearance: PropertyTypeAppearanceModel; + isSensitive: boolean; + visibility: MemberTypePropertyTypeVisibilityModel; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypeRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypeRequestModel.ts index 63655cd01a..7178cfdef1 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypeRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateMemberTypeRequestModel.ts @@ -4,9 +4,22 @@ /* eslint-disable */ import type { MemberTypeCompositionModel } from './MemberTypeCompositionModel'; -import type { UpdateContentTypeForMemberTypeRequestModel } from './UpdateContentTypeForMemberTypeRequestModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; +import type { UpdateMemberTypePropertyTypeContainerRequestModel } from './UpdateMemberTypePropertyTypeContainerRequestModel'; +import type { UpdateMemberTypePropertyTypeRequestModel } from './UpdateMemberTypePropertyTypeRequestModel'; -export type UpdateMemberTypeRequestModel = (UpdateContentTypeForMemberTypeRequestModel & { +export type UpdateMemberTypeRequestModel = { + alias: string; + name: string; + description?: string | null; + icon: string; + allowedAsRoot: boolean; + variesByCulture: boolean; + variesBySegment: boolean; + collection?: ReferenceByIdModel | null; + isElement: boolean; + properties: Array; + containers: Array; compositions: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdatePackageRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdatePackageRequestModel.ts index c77502d8d6..85b28a9baf 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdatePackageRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdatePackageRequestModel.ts @@ -3,9 +3,21 @@ /* tslint:disable */ /* eslint-disable */ -import type { PackageModelBaseModel } from './PackageModelBaseModel'; - -export type UpdatePackageRequestModel = (PackageModelBaseModel & { +export type UpdatePackageRequestModel = { + name: string; + contentNodeId?: string | null; + contentLoadChildNodes: boolean; + mediaIds: Array; + mediaLoadChildNodes: boolean; + documentTypes: Array; + mediaTypes: Array; + dataTypes: Array; + templates: Array; + partialViews: Array; + stylesheets: Array; + scripts: Array; + languages: Array; + dictionaryItems: Array; packagePath: string; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdatePartialViewRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdatePartialViewRequestModel.ts index 74425b5145..68b2cbdd38 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdatePartialViewRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdatePartialViewRequestModel.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemFileUpdateRequestModelBaseModel } from './FileSystemFileUpdateRequestModelBaseModel'; - -export type UpdatePartialViewRequestModel = FileSystemFileUpdateRequestModelBaseModel; +export type UpdatePartialViewRequestModel = { + content: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateScriptRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateScriptRequestModel.ts index 64b5dd28d1..7fea8d250b 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateScriptRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateScriptRequestModel.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemFileUpdateRequestModelBaseModel } from './FileSystemFileUpdateRequestModelBaseModel'; - -export type UpdateScriptRequestModel = FileSystemFileUpdateRequestModelBaseModel; +export type UpdateScriptRequestModel = { + content: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateStylesheetRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateStylesheetRequestModel.ts index 06dd317e1f..6e95bb058c 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateStylesheetRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateStylesheetRequestModel.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -import type { FileSystemFileUpdateRequestModelBaseModel } from './FileSystemFileUpdateRequestModelBaseModel'; - -export type UpdateStylesheetRequestModel = FileSystemFileUpdateRequestModelBaseModel; +export type UpdateStylesheetRequestModel = { + content: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateTemplateRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateTemplateRequestModel.ts index a4a734154c..837981d8e6 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateTemplateRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateTemplateRequestModel.ts @@ -3,7 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { TemplateModelBaseModel } from './TemplateModelBaseModel'; - -export type UpdateTemplateRequestModel = TemplateModelBaseModel; +export type UpdateTemplateRequestModel = { + name: string; + alias: string; + content?: string | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateUserGroupRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateUserGroupRequestModel.ts index f6f7cecb2d..7c99d56cb8 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateUserGroupRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateUserGroupRequestModel.ts @@ -3,7 +3,21 @@ /* tslint:disable */ /* eslint-disable */ -import type { UserGroupBaseModel } from './UserGroupBaseModel'; +import type { DocumentPermissionPresentationModel } from './DocumentPermissionPresentationModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; +import type { UnknownTypePermissionPresentationModel } from './UnknownTypePermissionPresentationModel'; -export type UpdateUserGroupRequestModel = UserGroupBaseModel; +export type UpdateUserGroupRequestModel = { + name: string; + icon?: string | null; + sections: Array; + languages: Array; + hasAccessToAllLanguages: boolean; + documentStartNode?: ReferenceByIdModel | null; + documentRootAccess: boolean; + mediaStartNode?: ReferenceByIdModel | null; + mediaRootAccess: boolean; + fallbackPermissions: Array; + permissions: Array<(DocumentPermissionPresentationModel | UnknownTypePermissionPresentationModel)>; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateUserRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateUserRequestModel.ts index a9985bc90d..acb30e4f35 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateUserRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateUserRequestModel.ts @@ -3,11 +3,13 @@ /* tslint:disable */ /* eslint-disable */ -import type { UserPresentationBaseModel } from './UserPresentationBaseModel'; - -export type UpdateUserRequestModel = (UserPresentationBaseModel & { +export type UpdateUserRequestModel = { + email: string; + userName: string; + name: string; + userGroupIds: Array; languageIsoCode: string; documentStartNodeIds: Array; mediaStartNodeIds: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateWebhookRequestModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateWebhookRequestModel.ts index c4efd99c20..476e64a89f 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateWebhookRequestModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UpdateWebhookRequestModel.ts @@ -3,9 +3,11 @@ /* tslint:disable */ /* eslint-disable */ -import type { WebhookModelBaseModel } from './WebhookModelBaseModel'; - -export type UpdateWebhookRequestModel = (WebhookModelBaseModel & { +export type UpdateWebhookRequestModel = { + enabled: boolean; + url: string; + contentTypeKeys: Array; + headers: Record; events: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserGroupBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserGroupBaseModel.ts deleted file mode 100644 index 12df62d966..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserGroupBaseModel.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -import type { DocumentPermissionPresentationModel } from './DocumentPermissionPresentationModel'; -import type { ReferenceByIdModel } from './ReferenceByIdModel'; -import type { UnknownTypePermissionPresentationModel } from './UnknownTypePermissionPresentationModel'; - -export type UserGroupBaseModel = { - name: string; - icon?: string | null; - sections: Array; - languages: Array; - hasAccessToAllLanguages: boolean; - documentStartNode?: ReferenceByIdModel | null; - documentRootAccess: boolean; - mediaStartNode?: ReferenceByIdModel | null; - mediaRootAccess: boolean; - fallbackPermissions: Array; - permissions: Array<(DocumentPermissionPresentationModel | UnknownTypePermissionPresentationModel)>; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserGroupItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserGroupItemResponseModel.ts index 8ded3fdf6e..a048595095 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserGroupItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserGroupItemResponseModel.ts @@ -3,9 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { NamedItemResponseModelBaseModel } from './NamedItemResponseModelBaseModel'; - -export type UserGroupItemResponseModel = (NamedItemResponseModelBaseModel & { +export type UserGroupItemResponseModel = { + id: string; + name: string; icon?: string | null; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserGroupResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserGroupResponseModel.ts index 04526f66a1..fc3d8af015 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserGroupResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserGroupResponseModel.ts @@ -3,10 +3,23 @@ /* tslint:disable */ /* eslint-disable */ -import type { UserGroupBaseModel } from './UserGroupBaseModel'; +import type { DocumentPermissionPresentationModel } from './DocumentPermissionPresentationModel'; +import type { ReferenceByIdModel } from './ReferenceByIdModel'; +import type { UnknownTypePermissionPresentationModel } from './UnknownTypePermissionPresentationModel'; -export type UserGroupResponseModel = (UserGroupBaseModel & { +export type UserGroupResponseModel = { + name: string; + icon?: string | null; + sections: Array; + languages: Array; + hasAccessToAllLanguages: boolean; + documentStartNode?: ReferenceByIdModel | null; + documentRootAccess: boolean; + mediaStartNode?: ReferenceByIdModel | null; + mediaRootAccess: boolean; + fallbackPermissions: Array; + permissions: Array<(DocumentPermissionPresentationModel | UnknownTypePermissionPresentationModel)>; id: string; isSystemGroup: boolean; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserInstallPresentationModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserInstallRequestModel.ts similarity index 84% rename from src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserInstallPresentationModel.ts rename to src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserInstallRequestModel.ts index 60841dad48..a24cc35709 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserInstallPresentationModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserInstallRequestModel.ts @@ -3,7 +3,7 @@ /* tslint:disable */ /* eslint-disable */ -export type UserInstallPresentationModel = { +export type UserInstallRequestModel = { name: string; email: string; password: string; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserItemResponseModel.ts index fbe9a652d8..e5bcc26d58 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserItemResponseModel.ts @@ -3,7 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { NamedItemResponseModelBaseModel } from './NamedItemResponseModelBaseModel'; - -export type UserItemResponseModel = NamedItemResponseModelBaseModel; +export type UserItemResponseModel = { + id: string; + name: string; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserPresentationBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserPresentationBaseModel.ts deleted file mode 100644 index 13a3b9e8a7..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserPresentationBaseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type UserPresentationBaseModel = { - email: string; - userName: string; - name: string; - userGroupIds: Array; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserResponseModel.ts index 32715c2d87..4f11202c48 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserResponseModel.ts @@ -3,10 +3,13 @@ /* tslint:disable */ /* eslint-disable */ -import type { UserPresentationBaseModel } from './UserPresentationBaseModel'; import type { UserStateModel } from './UserStateModel'; -export type UserResponseModel = (UserPresentationBaseModel & { +export type UserResponseModel = { + email: string; + userName: string; + name: string; + userGroupIds: Array; id: string; languageIsoCode?: string | null; documentStartNodeIds: Array; @@ -20,5 +23,5 @@ export type UserResponseModel = (UserPresentationBaseModel & { lastLockoutDate?: string | null; lastPasswordChangeDate?: string | null; isAdmin: boolean; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserTourStatusesResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserTourStatusesResponseModel.ts index be820dec20..d27675704d 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserTourStatusesResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/UserTourStatusesResponseModel.ts @@ -3,10 +3,9 @@ /* tslint:disable */ /* eslint-disable */ -import type { SetTourStatusRequestModel } from './SetTourStatusRequestModel'; import type { TourStatusModel } from './TourStatusModel'; export type UserTourStatusesResponseModel = { - tourStatuses: Array<(TourStatusModel | SetTourStatusRequestModel)>; + tourStatuses: Array; }; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ValueModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ValueModelBaseModel.ts deleted file mode 100644 index 6fef1698f5..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/ValueModelBaseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type ValueModelBaseModel = { - culture?: string | null; - segment?: string | null; - alias: string; - value?: any; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VariantItemResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VariantItemResponseModel.ts index 803621a39c..eb139f6fb5 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VariantItemResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VariantItemResponseModel.ts @@ -3,7 +3,8 @@ /* tslint:disable */ /* eslint-disable */ -import type { VariantItemResponseModelBaseModel } from './VariantItemResponseModelBaseModel'; - -export type VariantItemResponseModel = VariantItemResponseModelBaseModel; +export type VariantItemResponseModel = { + name: string; + culture?: string | null; +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VariantItemResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VariantItemResponseModelBaseModel.ts deleted file mode 100644 index 955c49c60c..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VariantItemResponseModelBaseModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type VariantItemResponseModelBaseModel = { - name: string; - culture?: string | null; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VariantModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VariantModelBaseModel.ts deleted file mode 100644 index fc747713b2..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VariantModelBaseModel.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type VariantModelBaseModel = { - culture?: string | null; - segment?: string | null; - name: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VariantResponseModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VariantResponseModelBaseModel.ts deleted file mode 100644 index 62e1eea854..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VariantResponseModelBaseModel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type VariantResponseModelBaseModel = { - culture?: string | null; - segment?: string | null; - name: string; - createDate: string; - updateDate: string; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyInviteUserResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyInviteUserResponseModel.ts new file mode 100644 index 0000000000..cc7f102b7f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyInviteUserResponseModel.ts @@ -0,0 +1,11 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PasswordConfigurationResponseModel } from './PasswordConfigurationResponseModel'; + +export type VerifyInviteUserResponseModel = { + passwordConfiguration: PasswordConfigurationResponseModel; +}; + diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyResetPasswordResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyResetPasswordResponseModel.ts new file mode 100644 index 0000000000..1c80084a94 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/VerifyResetPasswordResponseModel.ts @@ -0,0 +1,11 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PasswordConfigurationResponseModel } from './PasswordConfigurationResponseModel'; + +export type VerifyResetPasswordResponseModel = { + passwordConfiguration: PasswordConfigurationResponseModel; +}; + diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/WebhookModelBaseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/WebhookModelBaseModel.ts deleted file mode 100644 index d3e579f232..0000000000 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/WebhookModelBaseModel.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* generated using openapi-typescript-codegen -- do no edit */ -/* istanbul ignore file */ -/* tslint:disable */ -/* eslint-disable */ - -export type WebhookModelBaseModel = { - enabled: boolean; - url: string; - contentTypeKeys: Array; - headers: Record; -}; - diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/WebhookResponseModel.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/WebhookResponseModel.ts index 6ac0c94a39..918c92805b 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/WebhookResponseModel.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models/WebhookResponseModel.ts @@ -4,10 +4,13 @@ /* eslint-disable */ import type { WebhookEventResponseModel } from './WebhookEventResponseModel'; -import type { WebhookModelBaseModel } from './WebhookModelBaseModel'; -export type WebhookResponseModel = (WebhookModelBaseModel & { +export type WebhookResponseModel = { + enabled: boolean; + url: string; + contentTypeKeys: Array; + headers: Record; id: string; events: Array; -}); +}; diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/AuditLogResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/AuditLogResource.ts index b83d457350..4b35f87f78 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/AuditLogResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/AuditLogResource.ts @@ -14,7 +14,7 @@ import { request as __request } from '../core/request'; export class AuditLogResource { /** - * @returns PagedAuditLogWithUsernameResponseModel Success + * @returns any Success * @throws ApiError */ public static getAuditLog({ @@ -44,7 +44,7 @@ export class AuditLogResource { } /** - * @returns PagedAuditLogResponseModel Success + * @returns any Success * @throws ApiError */ public static getAuditLogById({ @@ -79,7 +79,7 @@ export class AuditLogResource { } /** - * @returns PagedAuditLogResponseModel Success + * @returns any Success * @throws ApiError */ public static getAuditLogTypeByLogType({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/CultureResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/CultureResource.ts index 9147291447..534bc8d823 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/CultureResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/CultureResource.ts @@ -11,7 +11,7 @@ import { request as __request } from '../core/request'; export class CultureResource { /** - * @returns PagedCultureReponseModel Success + * @returns any Success * @throws ApiError */ public static getCulture({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DataTypeResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DataTypeResource.ts index e347e92eae..f34c3393dd 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DataTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DataTypeResource.ts @@ -331,7 +331,7 @@ export class DataTypeResource { } /** - * @returns PagedDataTypeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getFilterDataType({ @@ -385,7 +385,7 @@ export class DataTypeResource { } /** - * @returns PagedModelDataTypeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getItemDataTypeSearch({ @@ -433,7 +433,7 @@ export class DataTypeResource { } /** - * @returns PagedDataTypeTreeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getTreeDataTypeChildren({ @@ -463,7 +463,7 @@ export class DataTypeResource { } /** - * @returns PagedDataTypeTreeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getTreeDataTypeRoot({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DictionaryResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DictionaryResource.ts index 6c4b632ba7..265fb3e886 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DictionaryResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DictionaryResource.ts @@ -3,19 +3,13 @@ /* tslint:disable */ /* eslint-disable */ import type { CreateDictionaryItemRequestModel } from '../models/CreateDictionaryItemRequestModel'; -import type { DataTypeTreeItemResponseModel } from '../models/DataTypeTreeItemResponseModel'; import type { DictionaryItemItemResponseModel } from '../models/DictionaryItemItemResponseModel'; import type { DictionaryItemResponseModel } from '../models/DictionaryItemResponseModel'; -import type { DocumentBlueprintTreeItemResponseModel } from '../models/DocumentBlueprintTreeItemResponseModel'; -import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; -import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; import type { ImportDictionaryRequestModel } from '../models/ImportDictionaryRequestModel'; -import type { MediaTypeTreeItemResponseModel } from '../models/MediaTypeTreeItemResponseModel'; import type { MoveDictionaryRequestModel } from '../models/MoveDictionaryRequestModel'; import type { NamedEntityTreeItemResponseModel } from '../models/NamedEntityTreeItemResponseModel'; import type { PagedDictionaryOverviewResponseModel } from '../models/PagedDictionaryOverviewResponseModel'; import type { PagedNamedEntityTreeItemResponseModel } from '../models/PagedNamedEntityTreeItemResponseModel'; -import type { RelationTypeTreeItemResponseModel } from '../models/RelationTypeTreeItemResponseModel'; import type { UpdateDictionaryItemRequestModel } from '../models/UpdateDictionaryItemRequestModel'; import type { CancelablePromise } from '../core/CancelablePromise'; @@ -25,7 +19,7 @@ import { request as __request } from '../core/request'; export class DictionaryResource { /** - * @returns PagedDictionaryOverviewResponseModel Success + * @returns any Success * @throws ApiError */ public static getDictionary({ @@ -152,7 +146,7 @@ export class DictionaryResource { } /** - * @returns binary Success + * @returns any Success * @throws ApiError */ public static getDictionaryByIdExport({ @@ -258,7 +252,7 @@ export class DictionaryResource { descendantId, }: { descendantId?: string, - }): CancelablePromise> { + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/dictionary/ancestors', @@ -272,7 +266,7 @@ export class DictionaryResource { } /** - * @returns PagedNamedEntityTreeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getTreeDictionaryChildren({ @@ -299,7 +293,7 @@ export class DictionaryResource { } /** - * @returns PagedNamedEntityTreeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getTreeDictionaryRoot({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentBlueprintResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentBlueprintResource.ts index c696b8b919..50837fd587 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentBlueprintResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentBlueprintResource.ts @@ -4,10 +4,14 @@ /* eslint-disable */ import type { CreateDocumentBlueprintFromDocumentRequestModel } from '../models/CreateDocumentBlueprintFromDocumentRequestModel'; import type { CreateDocumentBlueprintRequestModel } from '../models/CreateDocumentBlueprintRequestModel'; +import type { CreateFolderRequestModel } from '../models/CreateFolderRequestModel'; import type { DocumentBlueprintItemResponseModel } from '../models/DocumentBlueprintItemResponseModel'; import type { DocumentBlueprintResponseModel } from '../models/DocumentBlueprintResponseModel'; +import type { FolderResponseModel } from '../models/FolderResponseModel'; +import type { MoveDocumentBlueprintRequestModel } from '../models/MoveDocumentBlueprintRequestModel'; import type { PagedDocumentBlueprintTreeItemResponseModel } from '../models/PagedDocumentBlueprintTreeItemResponseModel'; import type { UpdateDocumentBlueprintRequestModel } from '../models/UpdateDocumentBlueprintRequestModel'; +import type { UpdateFolderResponseModel } from '../models/UpdateFolderResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -112,6 +116,130 @@ export class DocumentBlueprintResource { }); } + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentBlueprintByIdMove({ + id, + requestBody, + }: { + id: string, + requestBody?: MoveDocumentBlueprintRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document-blueprint/{id}/move', + path: { + 'id': id, + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Created + * @throws ApiError + */ + public static postDocumentBlueprintFolder({ + requestBody, + }: { + requestBody?: CreateFolderRequestModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'POST', + url: '/umbraco/management/api/v1/document-blueprint/folder', + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Generated-Resource', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getDocumentBlueprintFolderById({ + id, + }: { + id: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/document-blueprint/folder/{id}', + path: { + 'id': id, + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static deleteDocumentBlueprintFolderById({ + id, + }: { + id: string, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'DELETE', + url: '/umbraco/management/api/v1/document-blueprint/folder/{id}', + path: { + 'id': id, + }, + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + + /** + * @returns string Success + * @throws ApiError + */ + public static putDocumentBlueprintFolderById({ + id, + requestBody, + }: { + id: string, + requestBody?: UpdateFolderResponseModel, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'PUT', + url: '/umbraco/management/api/v1/document-blueprint/folder/{id}', + path: { + 'id': id, + }, + body: requestBody, + mediaType: 'application/json', + responseHeader: 'Umb-Notifications', + errors: { + 400: `Bad Request`, + 401: `The resource is protected and requires an authentication token`, + 404: `Not Found`, + }, + }); + } + /** * @returns string Created * @throws ApiError @@ -157,15 +285,47 @@ export class DocumentBlueprintResource { } /** - * @returns PagedDocumentBlueprintTreeItemResponseModel Success + * @returns any Success + * @throws ApiError + */ + public static getTreeDocumentBlueprintChildren({ + parentId, + skip, + take = 100, + foldersOnly = false, + }: { + parentId?: string, + skip?: number, + take?: number, + foldersOnly?: boolean, + }): CancelablePromise { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/tree/document-blueprint/children', + query: { + 'parentId': parentId, + 'skip': skip, + 'take': take, + 'foldersOnly': foldersOnly, + }, + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns any Success * @throws ApiError */ public static getTreeDocumentBlueprintRoot({ skip, take = 100, + foldersOnly = false, }: { skip?: number, take?: number, + foldersOnly?: boolean, }): CancelablePromise { return __request(OpenAPI, { method: 'GET', @@ -173,6 +333,7 @@ export class DocumentBlueprintResource { query: { 'skip': skip, 'take': take, + 'foldersOnly': foldersOnly, }, errors: { 401: `The resource is protected and requires an authentication token`, diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentResource.ts index a93a751137..361f0bf34b 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentResource.ts @@ -36,7 +36,7 @@ import { request as __request } from '../core/request'; export class DocumentResource { /** - * @returns PagedDocumentCollectionResponseModel Success + * @returns any Success * @throws ApiError */ public static getCollectionDocumentById({ @@ -233,7 +233,7 @@ export class DocumentResource { } /** - * @returns void + * @returns string Success * @throws ApiError */ public static putDocumentByIdDomains({ @@ -242,7 +242,7 @@ export class DocumentResource { }: { id: string, requestBody?: UpdateDomainsRequestModel, - }): CancelablePromise { + }): CancelablePromise { return __request(OpenAPI, { method: 'PUT', url: '/umbraco/management/api/v1/document/{id}/domains', @@ -251,6 +251,7 @@ export class DocumentResource { }, body: requestBody, mediaType: 'application/json', + responseHeader: 'Umb-Notifications', errors: { 400: `Bad Request`, 401: `The resource is protected and requires an authentication token`, @@ -525,7 +526,7 @@ export class DocumentResource { } /** - * @returns PagedIReferenceResponseModel Success + * @returns any Success * @throws ApiError */ public static getDocumentByIdReferencedBy({ @@ -554,7 +555,7 @@ export class DocumentResource { } /** - * @returns PagedReferenceByIdModel Success + * @returns any Success * @throws ApiError */ public static getDocumentByIdReferencedDescendants({ @@ -641,7 +642,7 @@ export class DocumentResource { } /** - * @returns PagedReferenceByIdModel Success + * @returns any Success * @throws ApiError */ public static getDocumentAreReferenced({ @@ -751,7 +752,7 @@ export class DocumentResource { } /** - * @returns PagedModelDocumentItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getItemDocumentSearch({ @@ -873,7 +874,7 @@ export class DocumentResource { } /** - * @returns PagedDocumentRecycleBinItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getRecycleBinDocumentChildren({ @@ -900,7 +901,7 @@ export class DocumentResource { } /** - * @returns PagedDocumentRecycleBinItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getRecycleBinDocumentRoot({ @@ -945,7 +946,7 @@ export class DocumentResource { } /** - * @returns PagedDocumentTreeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getTreeDocumentChildren({ @@ -975,7 +976,7 @@ export class DocumentResource { } /** - * @returns PagedDocumentTreeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getTreeDocumentRoot({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentTypeResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentTypeResource.ts index fb7e97feb5..a8ddaf5e7b 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentTypeResource.ts @@ -123,7 +123,7 @@ export class DocumentTypeResource { } /** - * @returns PagedAllowedDocumentTypeModel Success + * @returns any Success * @throws ApiError */ public static getDocumentTypeByIdAllowedChildren({ @@ -232,7 +232,7 @@ export class DocumentTypeResource { } /** - * @returns PagedAllowedDocumentTypeModel Success + * @returns any Success * @throws ApiError */ public static getDocumentTypeAllowedAtRoot({ @@ -408,7 +408,7 @@ export class DocumentTypeResource { } /** - * @returns PagedModelDocumentTypeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getItemDocumentTypeSearch({ @@ -456,7 +456,7 @@ export class DocumentTypeResource { } /** - * @returns PagedDocumentTypeTreeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getTreeDocumentTypeChildren({ @@ -486,7 +486,7 @@ export class DocumentTypeResource { } /** - * @returns PagedDocumentTypeTreeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getTreeDocumentTypeRoot({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentVersionResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentVersionResource.ts index c49f0984eb..ac1c69b4bd 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentVersionResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/DocumentVersionResource.ts @@ -12,7 +12,7 @@ import { request as __request } from '../core/request'; export class DocumentVersionResource { /** - * @returns PagedDocumentVersionItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getDocumentVersion({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/HealthCheckResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/HealthCheckResource.ts index a7ba30030a..c6f725d3a6 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/HealthCheckResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/HealthCheckResource.ts @@ -15,7 +15,7 @@ import { request as __request } from '../core/request'; export class HealthCheckResource { /** - * @returns PagedHealthCheckGroupResponseModel Success + * @returns any Success * @throws ApiError */ public static getHealthCheckGroup({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/HelpResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/HelpResource.ts index 5a8f103da5..a0e655e7af 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/HelpResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/HelpResource.ts @@ -11,7 +11,7 @@ import { request as __request } from '../core/request'; export class HelpResource { /** - * @returns PagedHelpPageResponseModel Success + * @returns any Success * @throws ApiError */ public static getHelp({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/IndexerResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/IndexerResource.ts index edd9f9661c..98f9a8b49b 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/IndexerResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/IndexerResource.ts @@ -3,7 +3,6 @@ /* tslint:disable */ /* eslint-disable */ import type { IndexResponseModel } from '../models/IndexResponseModel'; -import type { OkResult } from '../models/OkResult'; import type { PagedIndexResponseModel } from '../models/PagedIndexResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; @@ -13,7 +12,7 @@ import { request as __request } from '../core/request'; export class IndexerResource { /** - * @returns PagedIndexResponseModel Success + * @returns any Success * @throws ApiError */ public static getIndexer({ @@ -59,20 +58,21 @@ export class IndexerResource { } /** - * @returns OkResult Success + * @returns string Success * @throws ApiError */ public static postIndexerByIndexNameRebuild({ indexName, }: { indexName: string, - }): CancelablePromise { + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/indexer/{indexName}/rebuild', path: { 'indexName': indexName, }, + responseHeader: 'Umb-Notifications', errors: { 400: `Bad Request`, 401: `The resource is protected and requires an authentication token`, diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/LanguageResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/LanguageResource.ts index 3010b55c19..2226026620 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/LanguageResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/LanguageResource.ts @@ -36,7 +36,7 @@ export class LanguageResource { } /** - * @returns PagedLanguageResponseModel Success + * @returns any Success * @throws ApiError */ public static getLanguage({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/LogViewerResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/LogViewerResource.ts index d46fc4962a..b7b40ca217 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/LogViewerResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/LogViewerResource.ts @@ -19,7 +19,7 @@ import { request as __request } from '../core/request'; export class LogViewerResource { /** - * @returns PagedLoggerResponseModel Success + * @returns any Success * @throws ApiError */ public static getLogViewerLevel({ @@ -68,7 +68,7 @@ export class LogViewerResource { } /** - * @returns PagedLogMessageResponseModel Success + * @returns any Success * @throws ApiError */ public static getLogViewerLog({ @@ -107,7 +107,7 @@ export class LogViewerResource { } /** - * @returns PagedLogTemplateResponseModel Success + * @returns any Success * @throws ApiError */ public static getLogViewerMessageTemplate({ @@ -138,7 +138,7 @@ export class LogViewerResource { } /** - * @returns PagedSavedLogSearchResponseModel Success + * @returns any Success * @throws ApiError */ public static getLogViewerSavedSearch({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ManifestResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ManifestResource.ts new file mode 100644 index 0000000000..a206603b17 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ManifestResource.ts @@ -0,0 +1,52 @@ +/* generated using openapi-typescript-codegen -- do no edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { ManifestResponseModel } from '../models/ManifestResponseModel'; + +import type { CancelablePromise } from '../core/CancelablePromise'; +import { OpenAPI } from '../core/OpenAPI'; +import { request as __request } from '../core/request'; + +export class ManifestResource { + + /** + * @returns any Success + * @throws ApiError + */ + public static getManifestManifest(): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/manifest/manifest', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getManifestManifestPrivate(): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/manifest/manifest/private', + errors: { + 401: `The resource is protected and requires an authentication token`, + }, + }); + } + + /** + * @returns any Success + * @throws ApiError + */ + public static getManifestManifestPublic(): CancelablePromise> { + return __request(OpenAPI, { + method: 'GET', + url: '/umbraco/management/api/v1/manifest/manifest/public', + }); + } + +} diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MediaResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MediaResource.ts index 307d1fb595..13e488d10b 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MediaResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MediaResource.ts @@ -26,7 +26,7 @@ import { request as __request } from '../core/request'; export class MediaResource { /** - * @returns PagedMediaCollectionResponseModel Success + * @returns any Success * @throws ApiError */ public static getCollectionMedia({ @@ -88,7 +88,7 @@ export class MediaResource { } /** - * @returns PagedModelMediaItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getItemMediaSearch({ @@ -269,7 +269,7 @@ export class MediaResource { } /** - * @returns PagedIReferenceResponseModel Success + * @returns any Success * @throws ApiError */ public static getMediaByIdReferencedBy({ @@ -298,7 +298,7 @@ export class MediaResource { } /** - * @returns PagedReferenceByIdModel Success + * @returns any Success * @throws ApiError */ public static getMediaByIdReferencedDescendants({ @@ -356,7 +356,7 @@ export class MediaResource { } /** - * @returns PagedReferenceByIdModel Success + * @returns any Success * @throws ApiError */ public static getMediaAreReferenced({ @@ -540,7 +540,7 @@ export class MediaResource { } /** - * @returns PagedMediaRecycleBinItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getRecycleBinMediaChildren({ @@ -567,7 +567,7 @@ export class MediaResource { } /** - * @returns PagedMediaRecycleBinItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getRecycleBinMediaRoot({ @@ -612,7 +612,7 @@ export class MediaResource { } /** - * @returns PagedMediaTreeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getTreeMediaChildren({ @@ -642,7 +642,7 @@ export class MediaResource { } /** - * @returns PagedMediaTreeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getTreeMediaRoot({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MediaTypeResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MediaTypeResource.ts index baea888753..3f6d2410eb 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MediaTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MediaTypeResource.ts @@ -47,7 +47,7 @@ export class MediaTypeResource { } /** - * @returns PagedModelMediaTypeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getItemMediaTypeSearch({ @@ -170,7 +170,7 @@ export class MediaTypeResource { } /** - * @returns PagedAllowedMediaTypeModel Success + * @returns any Success * @throws ApiError */ public static getMediaTypeByIdAllowedChildren({ @@ -279,7 +279,7 @@ export class MediaTypeResource { } /** - * @returns PagedAllowedMediaTypeModel Success + * @returns any Success * @throws ApiError */ public static getMediaTypeAllowedAtRoot({ @@ -441,7 +441,7 @@ export class MediaTypeResource { } /** - * @returns PagedMediaTypeTreeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getTreeMediaTypeChildren({ @@ -471,7 +471,7 @@ export class MediaTypeResource { } /** - * @returns PagedMediaTypeTreeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getTreeMediaTypeRoot({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberGroupResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberGroupResource.ts index 506c860fe9..d80e275f0e 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberGroupResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberGroupResource.ts @@ -37,7 +37,7 @@ export class MemberGroupResource { } /** - * @returns PagedMemberGroupResponseModel Success + * @returns any Success * @throws ApiError */ public static getMemberGroup({ @@ -155,7 +155,7 @@ export class MemberGroupResource { } /** - * @returns PagedNamedEntityTreeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getTreeMemberGroupRoot({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberResource.ts index c4a422141c..3db3db8763 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberResource.ts @@ -18,7 +18,7 @@ import { request as __request } from '../core/request'; export class MemberResource { /** - * @returns PagedMemberResponseModel Success + * @returns any Success * @throws ApiError */ public static getFilterMember({ @@ -85,7 +85,7 @@ export class MemberResource { } /** - * @returns PagedModelMemberItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getItemMemberSearch({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberTypeResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberTypeResource.ts index e71c57bd9f..7d1f97bdf1 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/MemberTypeResource.ts @@ -40,7 +40,7 @@ export class MemberTypeResource { } /** - * @returns PagedModelMemberTypeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getItemMemberTypeSearch({ @@ -230,7 +230,7 @@ export class MemberTypeResource { } /** - * @returns PagedNamedEntityTreeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getTreeMemberTypeRoot({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ObjectTypesResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ObjectTypesResource.ts index e22032ecde..00759d1852 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ObjectTypesResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ObjectTypesResource.ts @@ -11,7 +11,7 @@ import { request as __request } from '../core/request'; export class ObjectTypesResource { /** - * @returns PagedObjectTypeResponseModel Success + * @returns any Success * @throws ApiError */ public static getObjectTypes({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PackageResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PackageResource.ts index 9e35f2a517..6698b384b0 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PackageResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PackageResource.ts @@ -5,7 +5,6 @@ import type { CreatePackageRequestModel } from '../models/CreatePackageRequestModel'; import type { PackageConfigurationResponseModel } from '../models/PackageConfigurationResponseModel'; import type { PackageDefinitionResponseModel } from '../models/PackageDefinitionResponseModel'; -import type { PackageManifestResponseModel } from '../models/PackageManifestResponseModel'; import type { PagedPackageDefinitionResponseModel } from '../models/PagedPackageDefinitionResponseModel'; import type { PagedPackageMigrationStatusResponseModel } from '../models/PagedPackageMigrationStatusResponseModel'; import type { UpdatePackageRequestModel } from '../models/UpdatePackageRequestModel'; @@ -55,7 +54,7 @@ export class PackageResource { } /** - * @returns PagedPackageDefinitionResponseModel Success + * @returns any Success * @throws ApiError */ public static getPackageCreated({ @@ -174,7 +173,7 @@ export class PackageResource { } /** - * @returns binary Success + * @returns any Success * @throws ApiError */ public static getPackageCreatedByIdDownload({ @@ -199,31 +198,6 @@ export class PackageResource { * @returns any Success * @throws ApiError */ - public static getPackageManifest(): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/package/manifest', - errors: { - 401: `The resource is protected and requires an authentication token`, - }, - }); - } - - /** - * @returns any Success - * @throws ApiError - */ - public static getPackageManifestPublic(): CancelablePromise> { - return __request(OpenAPI, { - method: 'GET', - url: '/umbraco/management/api/v1/package/manifest/public', - }); - } - - /** - * @returns PagedPackageMigrationStatusResponseModel Success - * @throws ApiError - */ public static getPackageMigrationStatus({ skip, take = 100, diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PartialViewResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PartialViewResource.ts index 7504bb951e..258df0ccad 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PartialViewResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/PartialViewResource.ts @@ -236,7 +236,7 @@ export class PartialViewResource { } /** - * @returns PagedPartialViewSnippetItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getPartialViewSnippet({ @@ -303,7 +303,7 @@ export class PartialViewResource { } /** - * @returns PagedFileSystemTreeItemPresentationModel Success + * @returns any Success * @throws ApiError */ public static getTreePartialViewChildren({ @@ -330,7 +330,7 @@ export class PartialViewResource { } /** - * @returns PagedFileSystemTreeItemPresentationModel Success + * @returns any Success * @throws ApiError */ public static getTreePartialViewRoot({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RedirectManagementResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RedirectManagementResource.ts index cb67b21bf7..608b436b61 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RedirectManagementResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RedirectManagementResource.ts @@ -13,7 +13,7 @@ import { request as __request } from '../core/request'; export class RedirectManagementResource { /** - * @returns PagedRedirectUrlResponseModel Success + * @returns any Success * @throws ApiError */ public static getRedirectManagement({ @@ -41,7 +41,7 @@ export class RedirectManagementResource { } /** - * @returns PagedRedirectUrlResponseModel Success + * @returns any Success * @throws ApiError */ public static getRedirectManagementById({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RelationResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RelationResource.ts index 03ed4a82c8..470f38ac4a 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RelationResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RelationResource.ts @@ -11,7 +11,7 @@ import { request as __request } from '../core/request'; export class RelationResource { /** - * @returns PagedRelationResponseModel Success + * @returns any Success * @throws ApiError */ public static getRelationTypeById({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RelationTypeResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RelationTypeResource.ts index b8e8141a9f..40a2bb7c22 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RelationTypeResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/RelationTypeResource.ts @@ -34,7 +34,7 @@ export class RelationTypeResource { } /** - * @returns PagedRelationTypeResponseModel Success + * @returns any Success * @throws ApiError */ public static getRelationType({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ScriptResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ScriptResource.ts index 6e0495ec7d..576ac97f16 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ScriptResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/ScriptResource.ts @@ -255,7 +255,7 @@ export class ScriptResource { } /** - * @returns PagedFileSystemTreeItemPresentationModel Success + * @returns any Success * @throws ApiError */ public static getTreeScriptChildren({ @@ -282,7 +282,7 @@ export class ScriptResource { } /** - * @returns PagedFileSystemTreeItemPresentationModel Success + * @returns any Success * @throws ApiError */ public static getTreeScriptRoot({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/SearcherResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/SearcherResource.ts index ff805a23dd..b4baa27a9d 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/SearcherResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/SearcherResource.ts @@ -12,7 +12,7 @@ import { request as __request } from '../core/request'; export class SearcherResource { /** - * @returns PagedSearcherResponseModel Success + * @returns any Success * @throws ApiError */ public static getSearcher({ @@ -36,7 +36,7 @@ export class SearcherResource { } /** - * @returns PagedSearchResultResponseModel Success + * @returns any Success * @throws ApiError */ public static getSearcherBySearcherNameQuery({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/SecurityResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/SecurityResource.ts index f229959ef2..187b69ae51 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/SecurityResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/SecurityResource.ts @@ -5,6 +5,7 @@ import type { ResetPasswordRequestModel } from '../models/ResetPasswordRequestModel'; import type { ResetPasswordTokenRequestModel } from '../models/ResetPasswordTokenRequestModel'; import type { SecurityConfigurationResponseModel } from '../models/SecurityConfigurationResponseModel'; +import type { VerifyResetPasswordResponseModel } from '../models/VerifyResetPasswordResponseModel'; import type { VerifyResetPasswordTokenRequestModel } from '../models/VerifyResetPasswordTokenRequestModel'; import type { CancelablePromise } from '../core/CancelablePromise'; @@ -72,14 +73,14 @@ export class SecurityResource { } /** - * @returns void + * @returns any Success * @throws ApiError */ public static postSecurityForgotPasswordVerify({ requestBody, }: { - requestBody?: (VerifyResetPasswordTokenRequestModel | ResetPasswordTokenRequestModel), - }): CancelablePromise { + requestBody?: VerifyResetPasswordTokenRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/security/forgot-password/verify', diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/StaticFileResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/StaticFileResource.ts index 95d59e2241..321a4b3bb6 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/StaticFileResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/StaticFileResource.ts @@ -55,7 +55,7 @@ export class StaticFileResource { } /** - * @returns PagedFileSystemTreeItemPresentationModel Success + * @returns any Success * @throws ApiError */ public static getTreeStaticFileChildren({ @@ -82,7 +82,7 @@ export class StaticFileResource { } /** - * @returns PagedFileSystemTreeItemPresentationModel Success + * @returns any Success * @throws ApiError */ public static getTreeStaticFileRoot({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/StylesheetResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/StylesheetResource.ts index 636ee5780d..98cd485ab7 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/StylesheetResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/StylesheetResource.ts @@ -255,7 +255,7 @@ export class StylesheetResource { } /** - * @returns PagedFileSystemTreeItemPresentationModel Success + * @returns any Success * @throws ApiError */ public static getTreeStylesheetChildren({ @@ -282,7 +282,7 @@ export class StylesheetResource { } /** - * @returns PagedFileSystemTreeItemPresentationModel Success + * @returns any Success * @throws ApiError */ public static getTreeStylesheetRoot({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TagResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TagResource.ts index 2d0c9675f7..6885224f62 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TagResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TagResource.ts @@ -11,7 +11,7 @@ import { request as __request } from '../core/request'; export class TagResource { /** - * @returns PagedTagResponseModel Success + * @returns any Success * @throws ApiError */ public static getTag({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TelemetryResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TelemetryResource.ts index 9547c4866e..f87ab544c9 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TelemetryResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TelemetryResource.ts @@ -13,7 +13,7 @@ import { request as __request } from '../core/request'; export class TelemetryResource { /** - * @returns PagedTelemetryResponseModel Success + * @returns any Success * @throws ApiError */ public static getTelemetry({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TemplateResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TemplateResource.ts index 4eaa4d03ff..01d5cece06 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TemplateResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/TemplateResource.ts @@ -3,15 +3,9 @@ /* tslint:disable */ /* eslint-disable */ import type { CreateTemplateRequestModel } from '../models/CreateTemplateRequestModel'; -import type { DataTypeTreeItemResponseModel } from '../models/DataTypeTreeItemResponseModel'; -import type { DocumentBlueprintTreeItemResponseModel } from '../models/DocumentBlueprintTreeItemResponseModel'; -import type { DocumentTypeTreeItemResponseModel } from '../models/DocumentTypeTreeItemResponseModel'; -import type { FolderTreeItemResponseModel } from '../models/FolderTreeItemResponseModel'; -import type { MediaTypeTreeItemResponseModel } from '../models/MediaTypeTreeItemResponseModel'; import type { NamedEntityTreeItemResponseModel } from '../models/NamedEntityTreeItemResponseModel'; import type { PagedModelTemplateItemResponseModel } from '../models/PagedModelTemplateItemResponseModel'; import type { PagedNamedEntityTreeItemResponseModel } from '../models/PagedNamedEntityTreeItemResponseModel'; -import type { RelationTypeTreeItemResponseModel } from '../models/RelationTypeTreeItemResponseModel'; import type { TemplateConfigurationResponseModel } from '../models/TemplateConfigurationResponseModel'; import type { TemplateItemResponseModel } from '../models/TemplateItemResponseModel'; import type { TemplateQueryExecuteModel } from '../models/TemplateQueryExecuteModel'; @@ -48,7 +42,7 @@ export class TemplateResource { } /** - * @returns PagedModelTemplateItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getItemTemplateSearch({ @@ -227,7 +221,7 @@ export class TemplateResource { descendantId, }: { descendantId?: string, - }): CancelablePromise> { + }): CancelablePromise> { return __request(OpenAPI, { method: 'GET', url: '/umbraco/management/api/v1/tree/template/ancestors', @@ -241,7 +235,7 @@ export class TemplateResource { } /** - * @returns PagedNamedEntityTreeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getTreeTemplateChildren({ @@ -268,7 +262,7 @@ export class TemplateResource { } /** - * @returns PagedNamedEntityTreeItemResponseModel Success + * @returns any Success * @throws ApiError */ public static getTreeTemplateRoot({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/UserGroupResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/UserGroupResource.ts index f950a6f533..56df5f3884 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/UserGroupResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/UserGroupResource.ts @@ -82,7 +82,7 @@ export class UserGroupResource { } /** - * @returns PagedUserGroupResponseModel Success + * @returns any Success * @throws ApiError */ public static getUserGroup({ diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/UserResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/UserResource.ts index 18a940811c..afe9e48f33 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/UserResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/UserResource.ts @@ -31,6 +31,7 @@ import type { UserResponseModel } from '../models/UserResponseModel'; import type { UserStateModel } from '../models/UserStateModel'; import type { UserTwoFactorProviderModel } from '../models/UserTwoFactorProviderModel'; import type { VerifyInviteUserRequestModel } from '../models/VerifyInviteUserRequestModel'; +import type { VerifyInviteUserResponseModel } from '../models/VerifyInviteUserResponseModel'; import type { CancelablePromise } from '../core/CancelablePromise'; import { OpenAPI } from '../core/OpenAPI'; @@ -39,7 +40,7 @@ import { request as __request } from '../core/request'; export class UserResource { /** - * @returns PagedUserResponseModel Success + * @returns any Success * @throws ApiError */ public static getFilterUser({ @@ -107,7 +108,7 @@ export class UserResource { public static postUser({ requestBody, }: { - requestBody?: (CreateUserRequestModel | InviteUserRequestModel), + requestBody?: CreateUserRequestModel, }): CancelablePromise { return __request(OpenAPI, { method: 'POST', @@ -147,7 +148,7 @@ export class UserResource { } /** - * @returns PagedUserResponseModel Success + * @returns any Success * @throws ApiError */ public static getUser({ @@ -308,7 +309,7 @@ export class UserResource { requestBody, }: { id: string, - requestBody?: (ChangePasswordUserRequestModel | ChangePasswordCurrentUserRequestModel), + requestBody?: ChangePasswordUserRequestModel, }): CancelablePromise { return __request(OpenAPI, { method: 'POST', @@ -755,7 +756,6 @@ export class UserResource { responseHeader: 'Umb-Notifications', errors: { 400: `Bad Request`, - 401: `The resource is protected and requires an authentication token`, 404: `Not Found`, }, }); @@ -785,20 +785,19 @@ export class UserResource { } /** - * @returns string Success + * @returns any Success * @throws ApiError */ public static postUserInviteVerify({ requestBody, }: { - requestBody?: (VerifyInviteUserRequestModel | CreateInitialPasswordUserRequestModel), - }): CancelablePromise { + requestBody?: VerifyInviteUserRequestModel, + }): CancelablePromise { return __request(OpenAPI, { method: 'POST', url: '/umbraco/management/api/v1/user/invite/verify', body: requestBody, mediaType: 'application/json', - responseHeader: 'Umb-Notifications', errors: { 400: `Bad Request`, 404: `Not Found`, diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/WebhookResource.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/WebhookResource.ts index 4e7f80c31f..c0a457ea98 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/WebhookResource.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services/WebhookResource.ts @@ -15,7 +15,7 @@ import { request as __request } from '../core/request'; export class WebhookResource { /** - * @returns PagedWebhookResponseModel Success + * @returns any Success * @throws ApiError */ public static getWebhook({ diff --git a/src/Umbraco.Web.UI.Client/src/external/base64-js/index.ts b/src/Umbraco.Web.UI.Client/src/external/base64-js/index.ts new file mode 100644 index 0000000000..d8a192ebba --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/base64-js/index.ts @@ -0,0 +1 @@ +export { fromByteArray } from 'base64-js'; diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/LICENSE b/src/Umbraco.Web.UI.Client/src/external/openid/LICENSE new file mode 100644 index 0000000000..d9a10c0d8e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/LICENSE @@ -0,0 +1,176 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/authorization_request.ts b/src/Umbraco.Web.UI.Client/src/external/openid/authorization_request.ts new file mode 100644 index 0000000000..668082c472 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/authorization_request.ts @@ -0,0 +1,122 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { DefaultCrypto } from './crypto_utils.js'; +import type { Crypto } from './crypto_utils.js'; +import { log } from './logger.js'; +import type { StringMap } from './types.js'; + +/** + * Represents an AuthorizationRequest as JSON. + */ +export interface AuthorizationRequestJson { + response_type: string; + client_id: string; + redirect_uri: string; + scope: string; + state?: string; + extras?: StringMap; + internal?: StringMap; +} + +/** + * Generates a cryptographically random new state. Useful for CSRF protection. + */ +const SIZE = 10; // 10 bytes +const newState = function (crypto: Crypto): string { + return crypto.generateRandom(SIZE); +}; + +/** + * Represents the AuthorizationRequest. + * For more information look at + * https://tools.ietf.org/html/rfc6749#section-4.1.1 + */ +export class AuthorizationRequest { + static RESPONSE_TYPE_TOKEN = 'token'; + static RESPONSE_TYPE_CODE = 'code'; + + // NOTE: + // Both redirect_uri and state are actually optional. + // However AppAuth is more opionionated, and requires you to use both. + + clientId: string; + redirectUri: string; + scope: string; + responseType: string; + state: string; + extras?: StringMap; + internal?: StringMap; + /** + * Constructs a new AuthorizationRequest. + * Use a `undefined` value for the `state` parameter, to generate a random + * state for CSRF protection. + */ + constructor( + request: AuthorizationRequestJson, + private crypto: Crypto = new DefaultCrypto(), + private usePkce: boolean = true, + ) { + this.clientId = request.client_id; + this.redirectUri = request.redirect_uri; + this.scope = request.scope; + this.responseType = request.response_type || AuthorizationRequest.RESPONSE_TYPE_CODE; + this.state = request.state || newState(crypto); + this.extras = request.extras; + // read internal properties if available + this.internal = request.internal; + } + + setupCodeVerifier(): Promise { + if (!this.usePkce) { + return Promise.resolve(); + } else { + const codeVerifier = this.crypto.generateRandom(128); + const challenge: Promise = this.crypto.deriveChallenge(codeVerifier).catch((error) => { + log('Unable to generate PKCE challenge. Not using PKCE', error); + return undefined; + }); + return challenge.then((result) => { + if (result) { + // keep track of the code used. + this.internal = this.internal || {}; + this.internal['code_verifier'] = codeVerifier; + this.extras = this.extras || {}; + this.extras['code_challenge'] = result; + // We always use S256. Plain is not good enough. + this.extras['code_challenge_method'] = 'S256'; + } + }); + } + } + + /** + * Serializes the AuthorizationRequest to a JavaScript Object. + */ + toJson(): Promise { + // Always make sure that the code verifier is setup when toJson() is called. + return this.setupCodeVerifier().then(() => { + return { + response_type: this.responseType, + client_id: this.clientId, + redirect_uri: this.redirectUri, + scope: this.scope, + state: this.state, + extras: this.extras, + internal: this.internal, + }; + }); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/authorization_request_handler.ts b/src/Umbraco.Web.UI.Client/src/external/openid/authorization_request_handler.ts new file mode 100644 index 0000000000..90eb72b171 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/authorization_request_handler.ts @@ -0,0 +1,161 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { AuthorizationRequest } from './authorization_request.js'; +import type { AuthorizationError, AuthorizationResponse } from './authorization_response.js'; +import type { AuthorizationServiceConfiguration } from './authorization_service_configuration.js'; +import type { Crypto } from './crypto_utils.js'; +import { log } from './logger.js'; +import type { QueryStringUtils } from './query_string_utils.js'; +import type { StringMap } from './types.js'; + +/** + * This type represents a lambda that can take an AuthorizationRequest, + * and an AuthorizationResponse as arguments. + */ +export type AuthorizationListener = ( + request: AuthorizationRequest, + response: AuthorizationResponse | null, + error: AuthorizationError | null, +) => void; + +/** + * Represents a structural type holding both authorization request and response. + */ +export interface AuthorizationRequestResponse { + request: AuthorizationRequest; + response: AuthorizationResponse | null; + error: AuthorizationError | null; +} + +/** + * Authorization Service notifier. + * This manages the communication of the AuthorizationResponse to the 3p client. + */ +export class AuthorizationNotifier { + private listener: AuthorizationListener | null = null; + + setAuthorizationListener(listener: AuthorizationListener) { + this.listener = listener; + } + + /** + * The authorization complete callback. + */ + onAuthorizationComplete( + request: AuthorizationRequest, + response: AuthorizationResponse | null, + error: AuthorizationError | null, + ): void { + if (this.listener) { + // complete authorization request + this.listener(request, response, error); + } + } +} + +// TODO(rahulrav@): add more built in parameters. +/* built in parameters. */ +export const BUILT_IN_PARAMETERS = ['redirect_uri', 'client_id', 'response_type', 'state', 'scope']; + +/** + * Defines the interface which is capable of handling an authorization request + * using various methods (iframe / popup / different process etc.). + */ +export abstract class AuthorizationRequestHandler { + constructor( + public utils: QueryStringUtils, + protected crypto: Crypto, + ) {} + + // notifier send the response back to the client. + protected notifier: AuthorizationNotifier | null = null; + + /** + * A utility method to be able to build the authorization request URL. + */ + protected buildRequestUrl(configuration: AuthorizationServiceConfiguration, request: AuthorizationRequest) { + // build the query string + // coerce to any type for convenience + const requestMap: StringMap = { + redirect_uri: request.redirectUri, + client_id: request.clientId, + response_type: request.responseType, + state: request.state, + scope: request.scope, + }; + + // copy over extras + if (request.extras) { + for (const extra in request.extras) { + if (Object.prototype.hasOwnProperty.call(request.extras, extra)) { + // check before inserting to requestMap + if (BUILT_IN_PARAMETERS.indexOf(extra) < 0) { + requestMap[extra] = request.extras[extra]; + } + } + } + } + + const query = this.utils.stringify(requestMap); + const baseUrl = configuration.authorizationEndpoint; + const url = `${baseUrl}?${query}`; + return url; + } + + /** + * Completes the authorization request if necessary & when possible. + */ + completeAuthorizationRequestIfPossible(): Promise { + // call complete authorization if possible to see there might + // be a response that needs to be delivered. + log(`Checking to see if there is an authorization response to be delivered.`); + if (!this.notifier) { + log(`Notifier is not present on AuthorizationRequest handler. + No delivery of result will be possible`); + } + return this.completeAuthorizationRequest().then((result) => { + if (!result) { + log(`No result is available yet.`); + } + if (result && this.notifier) { + this.notifier.onAuthorizationComplete(result.request, result.response, result.error); + } + }); + } + + /** + * Sets the default Authorization Service notifier. + */ + setAuthorizationNotifier(notifier: AuthorizationNotifier): AuthorizationRequestHandler { + this.notifier = notifier; + return this; + } + + /** + * Makes an authorization request. + */ + abstract performAuthorizationRequest( + configuration: AuthorizationServiceConfiguration, + request: AuthorizationRequest, + ): void; + + /** + * Checks if an authorization flow can be completed, and completes it. + * The handler returns a `Promise` if ready, or a `Promise` + * if not ready. + */ + protected abstract completeAuthorizationRequest(): Promise; +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/authorization_response.ts b/src/Umbraco.Web.UI.Client/src/external/openid/authorization_response.ts new file mode 100644 index 0000000000..ac074fca30 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/authorization_response.ts @@ -0,0 +1,79 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Represents the AuthorizationResponse as a JSON object. + */ +export interface AuthorizationResponseJson { + code: string; + state: string; +} + +/** + * Represents the AuthorizationError as a JSON object. + */ +export interface AuthorizationErrorJson { + error: string; + error_description?: string; + error_uri?: string; + state?: string; +} + +/** + * Represents the Authorization Response type. + * For more information look at + * https://tools.ietf.org/html/rfc6749#section-4.1.2 + */ +export class AuthorizationResponse { + code: string; + state: string; + + constructor(response: AuthorizationResponseJson) { + this.code = response.code; + this.state = response.state; + } + + toJson(): AuthorizationResponseJson { + return { code: this.code, state: this.state }; + } +} + +/** + * Represents the Authorization error response. + * For more information look at: + * https://tools.ietf.org/html/rfc6749#section-4.1.2.1 + */ +export class AuthorizationError { + error: string; + errorDescription?: string; + errorUri?: string; + state?: string; + + constructor(error: AuthorizationErrorJson) { + this.error = error.error; + this.errorDescription = error.error_description; + this.errorUri = error.error_uri; + this.state = error.state; + } + + toJson(): AuthorizationErrorJson { + return { + error: this.error, + error_description: this.errorDescription, + error_uri: this.errorUri, + state: this.state, + }; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/authorization_service_configuration.ts b/src/Umbraco.Web.UI.Client/src/external/openid/authorization_service_configuration.ts new file mode 100644 index 0000000000..3fd30c663f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/authorization_service_configuration.ts @@ -0,0 +1,81 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { Requestor } from './xhr.js'; +import { FetchRequestor } from './xhr.js'; + +/** + * Represents AuthorizationServiceConfiguration as a JSON object. + */ +export interface AuthorizationServiceConfigurationJson { + authorization_endpoint: string; + token_endpoint: string; + revocation_endpoint: string; + end_session_endpoint?: string; + userinfo_endpoint?: string; +} + +/** + * The standard base path for well-known resources on domains. + * See https://tools.ietf.org/html/rfc5785 for more information. + */ +const WELL_KNOWN_PATH = '.well-known'; + +/** + * The standard resource under the well known path at which an OpenID Connect + * discovery document can be found under an issuer's base URI. + */ +const OPENID_CONFIGURATION = 'openid-configuration'; + +/** + * Configuration details required to interact with an authorization service. + * + * More information at https://openid.net/specs/openid-connect-discovery-1_0-17.html + */ +export class AuthorizationServiceConfiguration { + authorizationEndpoint: string; + tokenEndpoint: string; + revocationEndpoint: string; + userInfoEndpoint?: string; + endSessionEndpoint?: string; + + constructor(request: AuthorizationServiceConfigurationJson) { + this.authorizationEndpoint = request.authorization_endpoint; + this.tokenEndpoint = request.token_endpoint; + this.revocationEndpoint = request.revocation_endpoint; + this.userInfoEndpoint = request.userinfo_endpoint; + this.endSessionEndpoint = request.end_session_endpoint; + } + + toJson() { + return { + authorization_endpoint: this.authorizationEndpoint, + token_endpoint: this.tokenEndpoint, + revocation_endpoint: this.revocationEndpoint, + end_session_endpoint: this.endSessionEndpoint, + userinfo_endpoint: this.userInfoEndpoint, + }; + } + + static fetchFromIssuer(openIdIssuerUrl: string, requestor?: Requestor): Promise { + const fullUrl = `${openIdIssuerUrl}/${WELL_KNOWN_PATH}/${OPENID_CONFIGURATION}`; + + const requestorToUse = requestor || new FetchRequestor(); + + return requestorToUse + .xhr({ url: fullUrl, dataType: 'json', method: 'GET' }) + .then((json) => new AuthorizationServiceConfiguration(json)); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/crypto_utils.ts b/src/Umbraco.Web.UI.Client/src/external/openid/crypto_utils.ts new file mode 100644 index 0000000000..9ee6c84ac1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/crypto_utils.ts @@ -0,0 +1,98 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as base64 from '@umbraco-cms/backoffice/external/base64-js'; + +import { AppAuthError } from './errors.js'; + +const HAS_CRYPTO = typeof window !== 'undefined' && !!(window.crypto as any); +const HAS_SUBTLE_CRYPTO = HAS_CRYPTO && !!(window.crypto.subtle as any); +const CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + +export function bufferToString(buffer: Uint8Array) { + const state = []; + for (let i = 0; i < buffer.byteLength; i += 1) { + const index = buffer[i] % CHARSET.length; + state.push(CHARSET[index]); + } + return state.join(''); +} + +export function urlSafe(buffer: Uint8Array): string { + const encoded = base64.fromByteArray(new Uint8Array(buffer)); + return encoded.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ''); +} + +// adapted from source: http://stackoverflow.com/a/11058858 +// this is used in place of TextEncode as the api is not yet +// well supported: https://caniuse.com/#search=TextEncoder +export function textEncodeLite(str: string) { + const buf = new ArrayBuffer(str.length); + const bufView = new Uint8Array(buf); + + for (let i = 0; i < str.length; i++) { + bufView[i] = str.charCodeAt(i); + } + return bufView; +} + +export interface Crypto { + /** + * Generate a random string + */ + generateRandom(size: number): string; + /** + * Compute the SHA256 of a given code. + * This is useful when using PKCE. + */ + deriveChallenge(code: string): Promise; +} + +/** + * The default implementation of the `Crypto` interface. + * This uses the capabilities of the browser. + */ +export class DefaultCrypto implements Crypto { + generateRandom(size: number) { + const buffer = new Uint8Array(size); + if (HAS_CRYPTO) { + window.crypto.getRandomValues(buffer); + } else { + // fall back to Math.random() if nothing else is available + for (let i = 0; i < size; i += 1) { + buffer[i] = (Math.random() * CHARSET.length) | 0; + } + } + return bufferToString(buffer); + } + + deriveChallenge(code: string): Promise { + if (code.length < 43 || code.length > 128) { + return Promise.reject(new AppAuthError('Invalid code length.')); + } + if (!HAS_SUBTLE_CRYPTO) { + return Promise.reject(new AppAuthError('window.crypto.subtle is unavailable.')); + } + + return new Promise((resolve, reject) => { + crypto.subtle.digest('SHA-256', textEncodeLite(code)).then( + (buffer) => { + return resolve(urlSafe(new Uint8Array(buffer))); + }, + (error) => reject(error), + ); + }); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/errors.ts b/src/Umbraco.Web.UI.Client/src/external/openid/errors.ts new file mode 100644 index 0000000000..a37305b800 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/errors.ts @@ -0,0 +1,24 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Represents the AppAuthError type. + */ +export class AppAuthError { + constructor( + public message: string, + public extras?: any, + ) {} +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/flags.ts b/src/Umbraco.Web.UI.Client/src/external/openid/flags.ts new file mode 100644 index 0000000000..8a278c6c06 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/flags.ts @@ -0,0 +1,21 @@ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* Global flags that control the behavior of App Auth JS. */ + +/* Logging turned on ? */ +export const IS_LOG = true; + +/* Profiling turned on ? */ +export const IS_PROFILE = false; diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/index.ts b/src/Umbraco.Web.UI.Client/src/external/openid/index.ts index ff18b32b45..108f5e5134 100644 --- a/src/Umbraco.Web.UI.Client/src/external/openid/index.ts +++ b/src/Umbraco.Web.UI.Client/src/external/openid/index.ts @@ -1,18 +1,17 @@ -export { - BaseTokenRequestHandler, - BasicQueryStringUtils, - FetchRequestor, - LocalStorageBackend, - RedirectRequestHandler, - RevokeTokenRequest, -} from '@openid/appauth'; -export { AuthorizationRequest } from '@openid/appauth/built/authorization_request'; -export { AuthorizationNotifier } from '@openid/appauth/built/authorization_request_handler'; -export { AuthorizationServiceConfiguration } from '@openid/appauth/built/authorization_service_configuration'; -export { - GRANT_TYPE_AUTHORIZATION_CODE, - GRANT_TYPE_REFRESH_TOKEN, - TokenRequest, -} from '@openid/appauth/built/token_request'; -export { TokenResponse } from '@openid/appauth/built/token_response'; -export type { LocationLike, StringMap } from '@openid/appauth/built/types'; +export * from './authorization_request.js'; +export * from './authorization_request_handler.js'; +export * from './authorization_response.js'; +export * from './authorization_service_configuration.js'; +export * from './crypto_utils.js'; +export * from './errors.js'; +export * from './flags.js'; +export * from './logger.js'; +export * from './query_string_utils.js'; +export * from './redirect_based_handler.js'; +export * from './revoke_token_request.js'; +export * from './storage.js'; +export * from './token_request.js'; +export * from './token_request_handler.js'; +export * from './token_response.js'; +export type * from './types.js'; +export * from './xhr.js'; diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/logger.ts b/src/Umbraco.Web.UI.Client/src/external/openid/logger.ts new file mode 100644 index 0000000000..9f31c83d79 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/logger.ts @@ -0,0 +1,71 @@ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { IS_LOG, IS_PROFILE } from './flags.js'; + +export function log(message: string, ...args: any[]) { + if (IS_LOG) { + const length = args ? args.length : 0; + if (length > 0) { + console.log(message, ...args); + } else { + console.log(message); + } + } +} + +// check to see if native support for profiling is available. +const NATIVE_PROFILE_SUPPORT = typeof window !== 'undefined' && !!window.performance && !!console.profile; + +/** + * A decorator that can profile a function. + */ +export function profile(target: any, propertyKey: string, descriptor: PropertyDescriptor) { + if (IS_PROFILE) { + return performProfile(target, propertyKey, descriptor); + } else { + // return as-is + return descriptor; + } +} + +function performProfile(target: any, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor { + const originalCallable = descriptor.value; + // name must exist + let name = originalCallable.name; + if (!name) { + name = 'anonymous function'; + } + if (NATIVE_PROFILE_SUPPORT) { + descriptor.value = function (args: any[]) { + console.profile(name); + const startTime = window.performance.now(); + const result = originalCallable.call(this || window, ...args); + const duration = window.performance.now() - startTime; + console.log(`${name} took ${duration} ms`); + console.profileEnd(); + return result; + }; + } else { + descriptor.value = function (args: any[]) { + log(`Profile start ${name}`); + const start = Date.now(); + const result = originalCallable.call(this || window, ...args); + const duration = Date.now() - start; + log(`Profile end ${name} took ${duration} ms.`); + return result; + }; + } + return descriptor; +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/query_string_utils.ts b/src/Umbraco.Web.UI.Client/src/external/openid/query_string_utils.ts new file mode 100644 index 0000000000..eb88ce5c13 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/query_string_utils.ts @@ -0,0 +1,64 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { LocationLike, StringMap } from './types.js'; + +/** + * Query String Utilities. + */ +export interface QueryStringUtils { + stringify(input: StringMap): string; + parse(query: LocationLike, useHash?: boolean): StringMap; + parseQueryString(query: string): StringMap; +} + +export class BasicQueryStringUtils implements QueryStringUtils { + parse(input: LocationLike, useHash?: boolean) { + if (useHash) { + return this.parseQueryString(input.hash); + } else { + return this.parseQueryString(input.search); + } + } + + parseQueryString(query: string): StringMap { + const result: StringMap = {}; + // if anything starts with ?, # or & remove it + query = query.trim().replace(/^(\?|#|&)/, ''); + const params = query.split('&'); + for (let i = 0; i < params.length; i += 1) { + const param = params[i]; // looks something like a=b + const parts = param.split('='); + if (parts.length >= 2) { + const key = decodeURIComponent(parts.shift()!); + const value = parts.length > 0 ? parts.join('=') : null; + if (value) { + result[key] = decodeURIComponent(value); + } + } + } + return result; + } + + stringify(input: StringMap) { + const encoded: string[] = []; + for (const key in input) { + if (Object.prototype.hasOwnProperty.call(input, key) && input[key]) { + encoded.push(`${encodeURIComponent(key)}=${encodeURIComponent(input[key])}`); + } + } + return encoded.join('&'); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/redirect_based_handler.ts b/src/Umbraco.Web.UI.Client/src/external/openid/redirect_based_handler.ts new file mode 100644 index 0000000000..8344c28cf2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/redirect_based_handler.ts @@ -0,0 +1,146 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AuthorizationRequest } from './authorization_request.js'; +import type { AuthorizationRequestResponse } from './authorization_request_handler.js'; +import { AuthorizationRequestHandler } from './authorization_request_handler.js'; +import { AuthorizationError, AuthorizationResponse } from './authorization_response.js'; +import type { AuthorizationServiceConfiguration } from './authorization_service_configuration.js'; +import type { Crypto } from './crypto_utils.js'; +import { DefaultCrypto } from './crypto_utils.js'; +import { log } from './logger.js'; +import { BasicQueryStringUtils } from './query_string_utils.js'; +import type { StorageBackend } from './storage.js'; +import { LocalStorageBackend } from './storage.js'; +import type { LocationLike } from './types.js'; + +/** key for authorization request. */ +const authorizationRequestKey = (handle: string) => { + return `${handle}_appauth_authorization_request`; +}; + +/** key for authorization service configuration */ +const authorizationServiceConfigurationKey = (handle: string) => { + return `${handle}_appauth_authorization_service_configuration`; +}; + +/** key in local storage which represents the current authorization request. */ +const AUTHORIZATION_REQUEST_HANDLE_KEY = 'appauth_current_authorization_request'; + +/** + * Represents an AuthorizationRequestHandler which uses a standard + * redirect based code flow. + */ +export class RedirectRequestHandler extends AuthorizationRequestHandler { + constructor( + // use the provided storage backend + // or initialize local storage with the default storage backend which + // uses window.localStorage + public storageBackend: StorageBackend = new LocalStorageBackend(), + utils = new BasicQueryStringUtils(), + public locationLike: LocationLike = window.location, + crypto: Crypto = new DefaultCrypto(), + ) { + super(utils, crypto); + } + + performAuthorizationRequest(configuration: AuthorizationServiceConfiguration, request: AuthorizationRequest) { + const handle = this.crypto.generateRandom(10); + + // before you make request, persist all request related data in local storage. + const persisted = Promise.all([ + this.storageBackend.setItem(AUTHORIZATION_REQUEST_HANDLE_KEY, handle), + // Calling toJson() adds in the code & challenge when possible + request + .toJson() + .then((result) => this.storageBackend.setItem(authorizationRequestKey(handle), JSON.stringify(result))), + this.storageBackend.setItem(authorizationServiceConfigurationKey(handle), JSON.stringify(configuration.toJson())), + ]); + + persisted.then(() => { + // make the redirect request + const url = this.buildRequestUrl(configuration, request); + log('Making a request to ', request, url); + this.locationLike.assign(url); + }); + } + + /** + * Attempts to introspect the contents of storage backend and completes the + * request. + */ + protected completeAuthorizationRequest(): Promise { + // TODO(rahulrav@): handle authorization errors. + return this.storageBackend.getItem(AUTHORIZATION_REQUEST_HANDLE_KEY).then((handle) => { + if (handle) { + // we have a pending request. + // fetch authorization request, and check state + return ( + this.storageBackend + .getItem(authorizationRequestKey(handle)) + // requires a corresponding instance of result + // TODO(rahulrav@): check for inconsitent state here + .then((result) => JSON.parse(result!)) + .then((json) => new AuthorizationRequest(json)) + .then((request) => { + // check redirect_uri and state + const currentUri = `${this.locationLike.origin}${this.locationLike.pathname}`; + const queryParams = this.utils.parse(this.locationLike, true /* use hash */); + const state: string | undefined = queryParams['state']; + const code: string | undefined = queryParams['code']; + const error: string | undefined = queryParams['error']; + log('Potential authorization request ', currentUri, queryParams, state, code, error); + const shouldNotify = state === request.state; + let authorizationResponse: AuthorizationResponse | null = null; + let authorizationError: AuthorizationError | null = null; + if (shouldNotify) { + if (error) { + // get additional optional info. + const errorUri = queryParams['error_uri']; + const errorDescription = queryParams['error_description']; + authorizationError = new AuthorizationError({ + error: error, + error_description: errorDescription, + error_uri: errorUri, + state: state, + }); + } else { + authorizationResponse = new AuthorizationResponse({ code: code, state: state }); + } + // cleanup state + return Promise.all([ + this.storageBackend.removeItem(AUTHORIZATION_REQUEST_HANDLE_KEY), + this.storageBackend.removeItem(authorizationRequestKey(handle)), + this.storageBackend.removeItem(authorizationServiceConfigurationKey(handle)), + ]).then(() => { + log('Delivering authorization response'); + return { + request: request, + response: authorizationResponse, + error: authorizationError, + } as AuthorizationRequestResponse; + }); + } else { + log('Mismatched request (state and request_uri) dont match.'); + return Promise.resolve(null); + } + }) + ); + } else { + return null; + } + }); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/revoke_token_request.ts b/src/Umbraco.Web.UI.Client/src/external/openid/revoke_token_request.ts new file mode 100644 index 0000000000..97e21f1bec --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/revoke_token_request.ts @@ -0,0 +1,73 @@ +/* eslint-disable local-rules/umb-class-prefix */ +import type { StringMap } from './types.js'; + +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Supported token types + */ +export type TokenTypeHint = 'refresh_token' | 'access_token'; + +/** + * Represents the Token Request as JSON. + */ +export interface RevokeTokenRequestJson { + token: string; + token_type_hint?: TokenTypeHint; + client_id?: string; + client_secret?: string; +} + +/** + * Represents a revoke token request. + * For more information look at: + * https://tools.ietf.org/html/rfc7009#section-2.1 + */ +export class RevokeTokenRequest { + token: string; + tokenTypeHint: TokenTypeHint | undefined; + clientId: string | undefined; + clientSecret: string | undefined; + + constructor(request: RevokeTokenRequestJson) { + this.token = request.token; + this.tokenTypeHint = request.token_type_hint; + this.clientId = request.client_id; + this.clientSecret = request.client_secret; + } + + /** + * Serializes a TokenRequest to a JavaScript object. + */ + toJson(): RevokeTokenRequestJson { + const json: RevokeTokenRequestJson = { token: this.token }; + if (this.tokenTypeHint) { + json['token_type_hint'] = this.tokenTypeHint; + } + if (this.clientId) { + json['client_id'] = this.clientId; + } + if (this.clientSecret) { + json['client_secret'] = this.clientSecret; + } + return json; + } + + toStringMap(): StringMap { + const json = this.toJson(); + // :( + return json as any; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/storage.ts b/src/Umbraco.Web.UI.Client/src/external/openid/storage.ts new file mode 100644 index 0000000000..a33c5dfcad --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/storage.ts @@ -0,0 +1,101 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * A subset of the `Storage` interface which we need for the backends to work. + * + * Essentially removes the indexable properties and readonly properties from + * `Storage` in lib.dom.d.ts. This is so that a custom type can extend it for + * testing. + */ +export interface UnderlyingStorage { + readonly length: number; + clear(): void; + getItem(key: string): string | null; + removeItem(key: string): void; + setItem(key: string, data: string): void; +} + +/** + * Asynchronous storage APIs. All methods return a `Promise`. + * All methods take the `DOMString` + * IDL type (as it is the lowest common denominator). + */ +export abstract class StorageBackend { + /** + * When passed a key `name`, will return that key's value. + */ + public abstract getItem(name: string): Promise; + + /** + * When passed a key `name`, will remove that key from the storage. + */ + public abstract removeItem(name: string): Promise; + + /** + * When invoked, will empty all keys out of the storage. + */ + public abstract clear(): Promise; + + /** + * The setItem() method of the `StorageBackend` interface, + * when passed a key name and value, will add that key to the storage, + * or update that key's value if it already exists. + */ + public abstract setItem(name: string, value: string): Promise; +} + +/** + * A `StorageBackend` backed by `localstorage`. + */ +export class LocalStorageBackend extends StorageBackend { + private storage: UnderlyingStorage; + constructor(storage?: UnderlyingStorage) { + super(); + this.storage = storage || window.localStorage; + } + + public getItem(name: string): Promise { + return new Promise((resolve, reject) => { + const value = this.storage.getItem(name); + if (value) { + resolve(value); + } else { + resolve(null); + } + }); + } + + public removeItem(name: string): Promise { + return new Promise((resolve, reject) => { + this.storage.removeItem(name); + resolve(); + }); + } + + public clear(): Promise { + return new Promise((resolve, reject) => { + this.storage.clear(); + resolve(); + }); + } + + public setItem(name: string, value: string): Promise { + return new Promise((resolve, reject) => { + this.storage.setItem(name, value); + resolve(); + }); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/token_request.ts b/src/Umbraco.Web.UI.Client/src/external/openid/token_request.ts new file mode 100644 index 0000000000..9cf5978d63 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/token_request.ts @@ -0,0 +1,99 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* eslint-disable local-rules/exported-string-constant-naming */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { StringMap } from './types.js'; + +export const GRANT_TYPE_AUTHORIZATION_CODE = 'authorization_code'; +export const GRANT_TYPE_REFRESH_TOKEN = 'refresh_token'; + +/** + * Represents the Token Request as JSON. + */ +export interface TokenRequestJson { + grant_type: string; + code?: string; + refresh_token?: string; + redirect_uri: string; + client_id: string; + extras?: StringMap; +} + +/** + * Represents an Access Token request. + * For more information look at: + * https://tools.ietf.org/html/rfc6749#section-4.1.3 + */ +export class TokenRequest { + clientId: string; + redirectUri: string; + grantType: string; + code: string | undefined; + refreshToken: string | undefined; + extras: StringMap | undefined; + + constructor(request: TokenRequestJson) { + this.clientId = request.client_id; + this.redirectUri = request.redirect_uri; + this.grantType = request.grant_type; + this.code = request.code; + this.refreshToken = request.refresh_token; + this.extras = request.extras; + } + + /** + * Serializes a TokenRequest to a JavaScript object. + */ + toJson(): TokenRequestJson { + return { + grant_type: this.grantType, + code: this.code, + refresh_token: this.refreshToken, + redirect_uri: this.redirectUri, + client_id: this.clientId, + extras: this.extras, + }; + } + + toStringMap(): StringMap { + const map: StringMap = { + grant_type: this.grantType, + client_id: this.clientId, + redirect_uri: this.redirectUri, + }; + + if (this.code) { + map['code'] = this.code; + } + + if (this.refreshToken) { + map['refresh_token'] = this.refreshToken; + } + + // copy over extras + if (this.extras) { + for (const extra in this.extras) { + if ( + Object.prototype.hasOwnProperty.call(this.extras, extra) && + !Object.prototype.hasOwnProperty.call(map, extra) + ) { + // check before inserting to requestMap + map[extra] = this.extras[extra]; + } + } + } + return map; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/token_request_handler.ts b/src/Umbraco.Web.UI.Client/src/external/openid/token_request_handler.ts new file mode 100644 index 0000000000..b4bc6f12e4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/token_request_handler.ts @@ -0,0 +1,87 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { AuthorizationServiceConfiguration } from './authorization_service_configuration.js'; +import { AppAuthError } from './errors.js'; +import { BasicQueryStringUtils } from './query_string_utils.js'; +import type { QueryStringUtils } from './query_string_utils.js'; +import type { RevokeTokenRequest } from './revoke_token_request.js'; +import type { TokenRequest } from './token_request.js'; +import { TokenError, TokenResponse } from './token_response.js'; +import type { TokenErrorJson, TokenResponseJson } from './token_response.js'; +import { FetchRequestor, type Requestor } from './xhr.js'; + +/** + * Represents an interface which can make a token request. + */ +export interface TokenRequestHandler { + /** + * Performs the token request, given the service configuration. + */ + performTokenRequest(configuration: AuthorizationServiceConfiguration, request: TokenRequest): Promise; + + performRevokeTokenRequest( + configuration: AuthorizationServiceConfiguration, + request: RevokeTokenRequest, + ): Promise; +} + +/** + * The default token request handler. + */ +export class BaseTokenRequestHandler implements TokenRequestHandler { + constructor( + public readonly requestor: Requestor = new FetchRequestor(), + public readonly utils: QueryStringUtils = new BasicQueryStringUtils(), + ) {} + + private isTokenResponse(response: TokenResponseJson | TokenErrorJson): response is TokenResponseJson { + return (response as TokenErrorJson).error === undefined; + } + + performRevokeTokenRequest( + configuration: AuthorizationServiceConfiguration, + request: RevokeTokenRequest, + ): Promise { + const revokeTokenResponse = this.requestor.xhr({ + url: configuration.revocationEndpoint, + method: 'POST', + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + data: this.utils.stringify(request.toStringMap()), + }); + + return revokeTokenResponse.then((response) => { + return true; + }); + } + + performTokenRequest(configuration: AuthorizationServiceConfiguration, request: TokenRequest): Promise { + const tokenResponse = this.requestor.xhr({ + url: configuration.tokenEndpoint, + method: 'POST', + dataType: 'json', // adding implicit dataType + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + data: this.utils.stringify(request.toStringMap()), + }); + + return tokenResponse.then((response) => { + if (this.isTokenResponse(response)) { + return new TokenResponse(response); + } else { + return Promise.reject(new AppAuthError(response.error, new TokenError(response))); + } + }); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/token_response.ts b/src/Umbraco.Web.UI.Client/src/external/openid/token_response.ts new file mode 100644 index 0000000000..3afbf101d7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/token_response.ts @@ -0,0 +1,137 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Represents the access token types. + * For more information see: + * https://tools.ietf.org/html/rfc6749#section-7.1 + */ +export type TokenType = 'bearer' | 'mac'; + +/** + * Represents the TokenResponse as a JSON Object. + */ +export interface TokenResponseJson { + access_token: string; + token_type?: TokenType /* treating token type as optional, as its going to be inferred. */; + expires_in?: string /* lifetime in seconds. */; + refresh_token?: string; + scope?: string; + id_token?: string /* https://openid.net/specs/openid-connect-core-1_0.html#TokenResponse */; + issued_at?: number /* when was it issued ? */; +} + +/** + * Represents the possible error codes from the token endpoint. + * For more information look at: + * https://tools.ietf.org/html/rfc6749#section-5.2 + */ +export type ErrorType = + | 'invalid_request' + | 'invalid_client' + | 'invalid_grant' + | 'unauthorized_client' + | 'unsupported_grant_type' + | 'invalid_scope'; + +/** + * Represents the TokenError as a JSON Object. + */ +export interface TokenErrorJson { + error: ErrorType; + error_description?: string; + error_uri?: string; +} + +// constants +const AUTH_EXPIRY_BUFFER = 10 * 60 * -1; // 10 mins in seconds + +/** + * Returns the instant of time in seconds. + */ +export const nowInSeconds = () => Math.round(new Date().getTime() / 1000); + +/** + * Represents the Token Response type. + * For more information look at: + * https://tools.ietf.org/html/rfc6749#section-5.1 + */ +export class TokenResponse { + accessToken: string; + tokenType: TokenType; + expiresIn: number | undefined; + refreshToken: string | undefined; + scope: string | undefined; + idToken: string | undefined; + issuedAt: number; + + constructor(response: TokenResponseJson) { + this.accessToken = response.access_token; + this.tokenType = response.token_type || 'bearer'; + if (response.expires_in) { + this.expiresIn = parseInt(response.expires_in, 10); + } + this.refreshToken = response.refresh_token; + this.scope = response.scope; + this.idToken = response.id_token; + this.issuedAt = response.issued_at || nowInSeconds(); + } + + toJson(): TokenResponseJson { + return { + access_token: this.accessToken, + id_token: this.idToken, + refresh_token: this.refreshToken, + scope: this.scope, + token_type: this.tokenType, + issued_at: this.issuedAt, + expires_in: this.expiresIn?.toString(), + }; + } + + isValid(buffer: number = AUTH_EXPIRY_BUFFER): boolean { + if (this.expiresIn) { + const now = nowInSeconds(); + return now < this.issuedAt + this.expiresIn + buffer; + } else { + return true; + } + } +} + +/** + * Represents the Token Error type. + * For more information look at: + * https://tools.ietf.org/html/rfc6749#section-5.2 + */ +export class TokenError { + error: ErrorType; + errorDescription: string | undefined; + errorUri: string | undefined; + + constructor(tokenError: TokenErrorJson) { + this.error = tokenError.error; + this.errorDescription = tokenError.error_description; + this.errorUri = tokenError.error_uri; + } + + toJson(): TokenErrorJson { + return { + error: this.error, + error_description: this.errorDescription, + error_uri: this.errorUri, + }; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/types.ts b/src/Umbraco.Web.UI.Client/src/external/openid/types.ts new file mode 100644 index 0000000000..b6fb853dad --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/types.ts @@ -0,0 +1,38 @@ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +export interface StringMap { + [key: string]: string; +} + +/** + * Represents a window.location like object. + */ +export interface LocationLike { + hash: string; + host: string; + origin: string; + hostname: string; + pathname: string; + port: string; + protocol: string; + search: string; + assign(url: string): void; +} + +export interface XhrRequestInit extends RequestInit { + url: string; + dataType?: string; + data?: any; +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/xhr.ts b/src/Umbraco.Web.UI.Client/src/external/openid/xhr.ts new file mode 100644 index 0000000000..fc32dbf8cb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/xhr.ts @@ -0,0 +1,78 @@ +/* eslint-disable local-rules/umb-class-prefix */ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AppAuthError } from './errors.js'; +import type { XhrRequestInit } from './types.js'; + +/** + * An class that abstracts away the ability to make an XMLHttpRequest. + */ +export abstract class Requestor { + abstract xhr(settings: unknown): Promise; +} + +/** + * Uses fetch API to make Ajax requests + */ +export class FetchRequestor extends Requestor { + xhr(settings: XhrRequestInit): Promise { + if (!settings.url) { + return Promise.reject(new AppAuthError('A URL must be provided.')); + } + const url: URL = new URL(settings.url); + const requestInit: RequestInit = {}; + requestInit.method = settings.method; + requestInit.mode = 'cors'; + + if (settings.data) { + if (settings.method && settings.method.toUpperCase() === 'POST') { + requestInit.body = settings.data; + } else { + const searchParams = new URLSearchParams(settings.data); + searchParams.forEach((value, key) => { + url.searchParams.append(key, value); + }); + } + } + + // Set the request headers + requestInit.headers = {}; + if (settings.headers) { + requestInit.headers = settings.headers; + } + + const isJsonDataType = settings.dataType && settings.dataType.toLowerCase() === 'json'; + + // Set 'Accept' header value for json requests (Taken from + // https://github.com/jquery/jquery/blob/e0d941156900a6bff7c098c8ea7290528e468cf8/src/ajax.js#L644 + // ) + if (isJsonDataType) { + (requestInit.headers as any).Accept = 'application/json, text/javascript, */*; q=0.01'; + } + + return fetch(url.toString(), requestInit).then((response) => { + if (response.status >= 200 && response.status < 300) { + const contentType = response.headers.get('content-type'); + if (isJsonDataType || (contentType && contentType.indexOf('application/json') !== -1)) { + return response.json(); + } else { + return response.text(); + } + } else { + return Promise.reject(new AppAuthError(response.status.toString(), response.statusText)); + } + }); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/rxjs/index.ts b/src/Umbraco.Web.UI.Client/src/external/rxjs/index.ts index f7d17284b7..cc5b1fcd73 100644 --- a/src/Umbraco.Web.UI.Client/src/external/rxjs/index.ts +++ b/src/Umbraco.Web.UI.Client/src/external/rxjs/index.ts @@ -17,4 +17,5 @@ export { switchMap, filter, startWith, + skip, } from 'rxjs'; diff --git a/src/Umbraco.Web.UI.Client/src/libs/extension-api/controller/server-extension-registrator.controller.ts b/src/Umbraco.Web.UI.Client/src/libs/extension-api/controller/server-extension-registrator.controller.ts index c663868854..a20359fd72 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/extension-api/controller/server-extension-registrator.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/extension-api/controller/server-extension-registrator.controller.ts @@ -1,10 +1,6 @@ import type { ManifestBase } from '../types/index.js'; import { isManifestBaseType } from '../type-guards/index.js'; -import { - PackageResource, - OpenAPI, - type PackageManifestResponseModel, -} from '@umbraco-cms/backoffice/external/backend-api'; +import { OpenAPI, ManifestResource, type ManifestResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import type { UmbBackofficeExtensionRegistry } from '@umbraco-cms/backoffice/extension-registry'; @@ -26,7 +22,19 @@ export class UmbServerExtensionRegistrator extends UmbControllerBase { * @remark Users must have the BACKOFFICE_ACCESS permission to access this method. */ public async registerAllExtensions() { - const { data: packages } = await tryExecuteAndNotify(this, PackageResource.getPackageManifest()); + const { data: packages } = await tryExecuteAndNotify(this, ManifestResource.getManifestManifest()); + if (packages) { + await this.#loadServerPackages(packages); + } + } + + /** + * Registers all private extensions from the server. + * This is used to register all private extensions that are available to the user. + * @remark Users must have the BACKOFFICE_ACCESS permission to access this method. + */ + public async registerPrivateExtensions() { + const { data: packages } = await tryExecuteAndNotify(this, ManifestResource.getManifestManifestPrivate()); if (packages) { await this.#loadServerPackages(packages); } @@ -38,13 +46,13 @@ export class UmbServerExtensionRegistrator extends UmbControllerBase { * @remark Any user can access this method without any permissions. */ public async registerPublicExtensions() { - const { data: packages } = await tryExecuteAndNotify(this, PackageResource.getPackageManifestPublic()); + const { data: packages } = await tryExecuteAndNotify(this, ManifestResource.getManifestManifestPublic()); if (packages) { await this.#loadServerPackages(packages); } } - async #loadServerPackages(packages: PackageManifestResponseModel[]) { + async #loadServerPackages(packages: ManifestResponseModel[]) { const extensions: ManifestBase[] = []; packages.forEach((p) => { diff --git a/src/Umbraco.Web.UI.Client/src/libs/extension-api/functions/index.ts b/src/Umbraco.Web.UI.Client/src/libs/extension-api/functions/index.ts index cf2758ba9f..21d7768a87 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/extension-api/functions/index.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/extension-api/functions/index.ts @@ -6,4 +6,4 @@ export * from './load-manifest-api.function.js'; export * from './load-manifest-element.function.js'; export * from './load-manifest-plain-css.function.js'; export * from './load-manifest-plain-js.function.js'; -export * from './types.js'; +export type * from './types.js'; diff --git a/src/Umbraco.Web.UI.Client/src/libs/extension-api/index.ts b/src/Umbraco.Web.UI.Client/src/libs/extension-api/index.ts index c8ce6b7200..22c8863cb0 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/extension-api/index.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/extension-api/index.ts @@ -2,7 +2,7 @@ export * from './condition/index.js'; export * from './controller/index.js'; export * from './functions/index.js'; export * from './initializers/index.js'; -export * from './models/index.js'; +export type * from './models/index.js'; export * from './registry/extension.registry.js'; export * from './type-guards/index.js'; -export * from './types/index.js'; +export type * from './types/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts index 6a3c44ce04..a5751325f3 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts @@ -90,11 +90,11 @@ switch (import.meta.env.VITE_UMBRACO_INSTALL_STATUS) { switch (import.meta.env.VITE_UMBRACO_EXTENSION_MOCKS) { case 'on': - handlers.push(manifestsHandlers.manifestDevelopmentHandler); + handlers.push(...manifestsHandlers.manifestDevelopmentHandlers); break; default: - handlers.push(manifestsHandlers.manifestEmptyHandler); + handlers.push(...manifestsHandlers.manifestEmptyHandlers); } export { handlers }; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/data-type/data-type.db.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/data-type/data-type.db.ts index b6108cf716..fad4ede41a 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/data-type/data-type.db.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/data-type/data-type.db.ts @@ -1,7 +1,6 @@ import { UmbEntityMockDbBase } from '../utils/entity/entity-base.js'; import { UmbMockEntityFolderManager } from '../utils/entity/entity-folder.manager.js'; import { UmbMockEntityTreeManager } from '../utils/entity/entity-tree.manager.js'; -import { folderTreeItemMapper } from '../utils.js'; import { UmbMockEntityItemManager } from '../utils/entity/entity-item.manager.js'; import { UmbMockEntityDetailManager } from '../utils/entity/entity-detail.manager.js'; import type { UmbMockDataTypeModel } from './data-type.data.js'; @@ -12,10 +11,11 @@ import type { CreateFolderRequestModel, DataTypeItemResponseModel, DataTypeResponseModel, + DataTypeTreeItemResponseModel, } from '@umbraco-cms/backoffice/external/backend-api'; class UmbDataTypeMockDB extends UmbEntityMockDbBase { - tree = new UmbMockEntityTreeManager(this, folderTreeItemMapper); + tree = new UmbMockEntityTreeManager(this, treeItemMapper); folder = new UmbMockEntityFolderManager(this, createFolderMockMapper); item = new UmbMockEntityItemManager(this, itemResponseMapper); detail = new UmbMockEntityDetailManager(this, createDetailMockMapper, detailResponseMapper); @@ -25,6 +25,17 @@ class UmbDataTypeMockDB extends UmbEntityMockDbBase { } } +const treeItemMapper = (model: UmbMockDataTypeModel): DataTypeTreeItemResponseModel => { + return { + name: model.name, + hasChildren: model.hasChildren, + id: model.id, + parent: model.parent, + isFolder: model.isFolder, + isDeletable: model.isDeletable, + }; +}; + const createFolderMockMapper = (request: CreateFolderRequestModel): UmbMockDataTypeModel => { return { name: request.name, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/template/template.db.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/template/template.db.ts index e0394582b7..59719a4c8c 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/template/template.db.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/template/template.db.ts @@ -1,15 +1,17 @@ import { UmbEntityMockDbBase } from '../utils/entity/entity-base.js'; import { UmbMockEntityTreeManager } from '../utils/entity/entity-tree.manager.js'; -import { folderTreeItemMapper } from '../utils.js'; import { UmbMockEntityItemManager } from '../utils/entity/entity-item.manager.js'; import type { UmbMockTemplateModel } from './template.data.js'; import { data } from './template.data.js'; import { UmbMockTemplateDetailManager } from './template-detail.manager.js'; import { UmbMockTemplateQueryManager } from './template-query.manager.js'; -import type { TemplateItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import type { + NamedEntityTreeItemResponseModel, + TemplateItemResponseModel, +} from '@umbraco-cms/backoffice/external/backend-api'; class UmbTemplateMockDB extends UmbEntityMockDbBase { - tree = new UmbMockEntityTreeManager(this, folderTreeItemMapper); + tree = new UmbMockEntityTreeManager(this, treeItemMapper); item = new UmbMockEntityItemManager(this, itemMapper); detail = new UmbMockTemplateDetailManager(this); query = new UmbMockTemplateQueryManager(this); @@ -19,6 +21,15 @@ class UmbTemplateMockDB extends UmbEntityMockDbBase { } } +const treeItemMapper = (model: UmbMockTemplateModel): NamedEntityTreeItemResponseModel => { + return { + name: model.name, + hasChildren: model.hasChildren, + id: model.id, + parent: model.parent, + }; +}; + const itemMapper = (item: UmbMockTemplateModel): TemplateItemResponseModel => { return { id: item.id, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/utils.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/utils.ts index f3a9ac812e..1635df1b75 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/utils.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/utils.ts @@ -1,35 +1,3 @@ -import type { - FolderTreeItemResponseModel, - FileSystemTreeItemPresentationModel, - NamedEntityTreeItemResponseModel, -} from '@umbraco-cms/backoffice/external/backend-api'; - -export const createEntityTreeItem = (item: any): NamedEntityTreeItemResponseModel => { - return { - name: item.name, - hasChildren: item.hasChildren, - id: item.id, - parent: item.parent, - }; -}; - -export const folderTreeItemMapper = (item: any): FolderTreeItemResponseModel => { - return { - ...createEntityTreeItem(item), - isFolder: item.isFolder, - }; -}; - -export const createFileSystemTreeItem = (item: any): FileSystemTreeItemPresentationModel => { - return { - path: item.path, - parent: item.parent ?? null, - name: item.name, - hasChildren: item.hasChildren ?? false, - isFolder: item.isFolder ?? false, - }; -}; - export const arrayFilter = (filterBy: Array, value?: Array): boolean => { // if a filter is not set, return all items if (!filterBy) { diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/utils/entity/entity-folder.manager.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/entity/entity-folder.manager.ts index 87eaef9361..04fc1eee37 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/utils/entity/entity-folder.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/entity/entity-folder.manager.ts @@ -2,11 +2,10 @@ import type { UmbEntityMockDbBase } from './entity-base.js'; import type { CreateFolderRequestModel, FolderResponseModel, - FolderTreeItemResponseModel, UpdateFolderResponseModel, } from '@umbraco-cms/backoffice/external/backend-api'; -export class UmbMockEntityFolderManager { +export class UmbMockEntityFolderManager { #db: UmbEntityMockDbBase; #createMockFolderMapper: (request: CreateFolderRequestModel) => MockItemType; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/utils/entity/entity-recycle-bin.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/entity/entity-recycle-bin.ts index 2cb6918b2d..2ffdb1f066 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/utils/entity/entity-recycle-bin.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/entity/entity-recycle-bin.ts @@ -1,8 +1,9 @@ import { UmbEntityMockDbBase } from './entity-base.js'; import { UmbMockEntityTreeManager } from './entity-tree.manager.js'; -import type { ContentTreeItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -export class UmbEntityRecycleBin extends UmbEntityMockDbBase { +export class UmbEntityRecycleBin< + MockType extends { id: string; isTrashed: boolean; hasChildren: boolean }, +> extends UmbEntityMockDbBase { tree; constructor(data: Array, treeItemMapper: (model: MockType) => any) { diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/utils/entity/entity-tree.manager.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/entity/entity-tree.manager.ts index def3178707..a35f9b763a 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/utils/entity/entity-tree.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/entity/entity-tree.manager.ts @@ -1,9 +1,8 @@ import { pagedResult } from '../paged-result.js'; import type { UmbEntityMockDbBase } from './entity-base.js'; import { UmbId } from '@umbraco-cms/backoffice/id'; -import type { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -export class UmbMockEntityTreeManager { +export class UmbMockEntityTreeManager { #db: UmbEntityMockDbBase; #treeItemMapper: (item: T) => any; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-base.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-base.ts index 15d9992ea5..c9a252c4de 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-base.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-base.ts @@ -1,8 +1,7 @@ import { UmbMockDBBase } from '../mock-db-base.js'; -import type { FileSystemResponseModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; export abstract class UmbFileSystemMockDbBase< - MockItemType extends FileSystemResponseModelBaseModel, + MockItemType extends { path: string }, > extends UmbMockDBBase { constructor(data: Array) { super(data); diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-detail.manager.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-detail.manager.ts index e18d6aacd8..d847ba3e70 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-detail.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-detail.manager.ts @@ -1,19 +1,14 @@ import type { UmbFileSystemMockDbBase } from './file-system-base.js'; -import type { - FileSystemFileCreateRequestModelBaseModel, - FileSystemFileResponseModelBaseModel, - FileSystemFileUpdateRequestModelBaseModel, - FileSystemResponseModelBaseModel, -} from '@umbraco-cms/backoffice/external/backend-api'; +import type { CreateFileRequestModel, FileResponseModel, UpdateFileRequestModel } from './types.js'; -export class UmbMockFileSystemDetailManager { +export class UmbMockFileSystemDetailManager { #db: UmbFileSystemMockDbBase; constructor(db: UmbFileSystemMockDbBase) { this.#db = db; } - create(request: FileSystemFileCreateRequestModelBaseModel) { + create(request: CreateFileRequestModel) { let path = request.parent ? `${request.parent.path}/${request.name}` : request.name; // ensure dash prefix if its not there path = path.startsWith('/') ? path : `/${path}`; @@ -24,14 +19,14 @@ export class UmbMockFileSystemDetailManager { + #defaultCreateMockItemMapper = (path: string, request: CreateFileRequestModel): MockItemType => { return { name: request.name, content: request.content, @@ -72,7 +67,7 @@ export class UmbMockFileSystemDetailManager { + #defaultReadResponseMapper = (item: MockItemType): FileResponseModel => { return { path: item.path, parent: item.parent, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-folder.manager.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-folder.manager.ts index b61ec4fe91..e2a3cccbc9 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-folder.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-folder.manager.ts @@ -1,11 +1,7 @@ import type { UmbFileSystemMockDbBase } from './file-system-base.js'; -import type { - FileSystemCreateRequestModelBaseModel, - FileSystemResponseModelBaseModel, -} from '@umbraco-cms/backoffice/external/backend-api'; export class UmbMockFileSystemFolderManager< - MockItemType extends FileSystemResponseModelBaseModel & { isFolder: boolean }, + MockItemType extends { path: string; name: string; parent?: { path: string } | null; isFolder: boolean }, > { #db: UmbFileSystemMockDbBase; @@ -13,7 +9,7 @@ export class UmbMockFileSystemFolderManager< this.#db = db; } - create(request: FileSystemCreateRequestModelBaseModel) { + create(request: any) { let path = request.parent ? `${request.parent.path}/${request.name}` : request.name; // ensure dash prefix if its not there path = path.startsWith('/') ? path : `/${path}`; @@ -48,7 +44,7 @@ export class UmbMockFileSystemFolderManager< } } - #defaultReadMapper = (item: MockItemType): FileSystemResponseModelBaseModel => { + #defaultReadMapper = (item: MockItemType) => { return { path: item.path, name: item.name, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-item.manager.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-item.manager.ts index 0576c24737..38be839e1b 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-item.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-item.manager.ts @@ -1,7 +1,7 @@ import type { UmbMockDBBase } from '../mock-db-base.js'; -import type { FileSystemItemResponseModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import type { FileItemResponseModel } from './types.js'; -export class UmbMockFileSystemItemManager { +export class UmbMockFileSystemItemManager { #db: UmbMockDBBase; constructor(db: UmbMockDBBase) { @@ -14,7 +14,7 @@ export class UmbMockFileSystemItemManager ({ +const createFileItemResponseModelBaseModel = (item: any): FileItemResponseModel => ({ path: item.path, name: item.name, parent: item.parent, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-tree.manager.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-tree.manager.ts index 2641be20f2..d9c4a65ac9 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-tree.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/file-system-tree.manager.ts @@ -1,5 +1,4 @@ import type { UmbMockDBBase } from '../mock-db-base.js'; -import { createFileSystemTreeItem } from '../../utils.js'; import { pagedResult } from '../paged-result.js'; import type { FileSystemTreeItemPresentationModel } from '@umbraco-cms/backoffice/external/backend-api'; @@ -39,3 +38,13 @@ export class UmbMockFileSystemTreeManager { + return { + path: item.path, + parent: item.parent ?? null, + name: item.name, + hasChildren: item.hasChildren ?? false, + isFolder: item.isFolder ?? false, + }; +}; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/types.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/types.ts new file mode 100644 index 0000000000..d07d69f1b6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/utils/file-system/types.ts @@ -0,0 +1,26 @@ +import type { FileSystemFolderModel } from '@umbraco-cms/backoffice/external/backend-api'; + +// Temp mock model until they are moved to msw +export type CreateFileRequestModel = { + name: string; + parent?: FileSystemFolderModel | null; + content: string; +}; + +export type FileResponseModel = { + path: string; + name: string; + parent?: FileSystemFolderModel | null; + content: string; +}; + +export type UpdateFileRequestModel = { + content: string; +}; + +export type FileItemResponseModel = { + path: string; + name: string; + parent?: FileSystemFolderModel | null; + isFolder: boolean; +}; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/e2e-handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/e2e-handlers.ts index 17cf239c92..30ecb97891 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/e2e-handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/e2e-handlers.ts @@ -20,7 +20,7 @@ import { handlers as configHandlers } from './handlers/config.handlers.js'; export const handlers = [ serverHandlers.serverRunningHandler, serverHandlers.serverInformationHandler, - manifestsHandlers.manifestEmptyHandler, + ...manifestsHandlers.manifestEmptyHandlers, ...auditLogHandlers, ...installHandlers, ...upgradeHandlers, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/manifests.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/manifests.handlers.ts index 751575284d..fbfc33ed1a 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/manifests.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/manifests.handlers.ts @@ -3,107 +3,159 @@ const { rest } = window.MockServiceWorker; import type { PackageManifestResponse } from '../../packages/packages/types.js'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; -export const manifestDevelopmentHandler = rest.get(umbracoPath('/package/manifest'), (_req, res, ctx) => { - return res( - // Respond with a 200 status code - ctx.status(200), - ctx.json([ - { - name: 'My Package Name', - version: '1.0.0', - extensions: [ - { - type: 'bundle', - alias: 'My.Package.Bundle', - name: 'My Package Bundle', - js: '/App_Plugins/custom-bundle-package/index.js', - }, - ], - }, - { - name: 'Named Package', - version: '1.0.0', - extensions: [ - { - type: 'section', - alias: 'My.Section.Custom', - name: 'Custom Section', - js: '/App_Plugins/section.js', - elementName: 'my-section-custom', - weight: 1, - meta: { - label: 'Custom', - pathname: 'my-custom', +export const manifestDevelopmentHandlers = [ + rest.get(umbracoPath('/manifest/manifest/private'), (_req, res, ctx) => { + return res( + // Respond with a 200 status code + ctx.status(200), + ctx.json([ + { + name: 'My Package Name', + version: '1.0.0', + extensions: [ + { + type: 'bundle', + alias: 'My.Package.Bundle', + name: 'My Package Bundle', + js: '/App_Plugins/custom-bundle-package/index.js', }, - }, - { - type: 'propertyEditorUi', - alias: 'My.PropertyEditorUI.Custom', - name: 'My Custom Property Editor UI', - js: '/App_Plugins/property-editor.js', - elementName: 'my-property-editor-ui-custom', - meta: { - label: 'My Custom Property', - icon: 'document', - group: 'Common', - propertyEditorSchema: 'Umbraco.TextBox', + ], + }, + { + name: 'Named Package', + version: '1.0.0', + extensions: [ + { + type: 'section', + alias: 'My.Section.Custom', + name: 'Custom Section', + js: '/App_Plugins/section.js', + elementName: 'my-section-custom', + weight: 1, + meta: { + label: 'Custom', + pathname: 'my-custom', + }, }, - }, - ], - }, - { - name: 'Package with an entry point', - extensions: [ - { - type: 'entryPoint', - name: 'My Custom Entry Point', - alias: 'My.Entrypoint.Custom', - js: '/App_Plugins/custom-entrypoint.js', - }, - ], - }, - { - name: 'Package with a view', - extensions: [ - { - type: 'packageView', - alias: 'My.PackageView.Custom', - name: 'My Custom Package View', - js: '/App_Plugins/package-view.js', - meta: { - packageName: 'Package with a view', + { + type: 'propertyEditorUi', + alias: 'My.PropertyEditorUI.Custom', + name: 'My Custom Property Editor UI', + js: '/App_Plugins/property-editor.js', + elementName: 'my-property-editor-ui-custom', + meta: { + label: 'My Custom Property', + icon: 'document', + group: 'Common', + propertyEditorSchema: 'Umbraco.TextBox', + }, }, - }, - ], - }, - { - name: 'My MFA Package', - extensions: [ - { - type: 'mfaLoginProvider', - alias: 'My.MfaLoginProvider.Custom.Google', - name: 'My Custom Google MFA Provider', - forProviderName: 'Google Authenticator', - }, - { - type: 'mfaLoginProvider', - alias: 'My.MfaLoginProvider.Custom.SMS', - name: 'My Custom SMS MFA Provider', - forProviderName: 'sms', - meta: { - label: 'Setup SMS Verification', + ], + }, + { + name: 'Package with an entry point', + extensions: [ + { + type: 'entryPoint', + name: 'My Custom Entry Point', + alias: 'My.Entrypoint.Custom', + js: '/App_Plugins/custom-entrypoint.js', }, - }, - ], - }, - ]), - ); -}); + ], + }, + { + name: 'My MFA Package', + extensions: [ + { + type: 'mfaLoginProvider', + alias: 'My.MfaLoginProvider.Custom.Google', + name: 'My Custom Google MFA Provider', + forProviderName: 'Google Authenticator', + }, + { + type: 'mfaLoginProvider', + alias: 'My.MfaLoginProvider.Custom.SMS', + name: 'My Custom SMS MFA Provider', + forProviderName: 'sms', + meta: { + label: 'Setup SMS Verification', + }, + }, + ], + }, + { + name: 'Package with a view', + extensions: [ + { + type: 'packageView', + alias: 'My.PackageView.Custom', + name: 'My Custom Package View', + js: '/App_Plugins/package-view.js', + meta: { + packageName: 'Package with a view', + }, + }, + ], + }, + { + name: 'My MFA Package', + extensions: [ + { + type: 'mfaLoginProvider', + alias: 'My.MfaLoginProvider.Custom', + name: 'My Custom MFA Provider', + forProviderName: 'sms', + meta: { + label: 'Setup SMS Verification', + }, + }, + ], + }, + ]), + ); + }), + rest.get(umbracoPath('/manifest/manifest/public'), (_req, res, ctx) => { + return res( + ctx.status(200), + ctx.json([ + { + name: 'My Auth Package', + extensions: [ + { + type: 'authProvider', + alias: 'My.AuthProvider.Google', + name: 'My Custom Auth Provider', + forProviderName: 'Umbraco.Google', + meta: { + label: 'Sign in with Google', + }, + }, + { + type: 'authProvider', + alias: 'My.AuthProvider.Github', + name: 'My Github Auth Provider', + forProviderName: 'Umbraco.Github', + meta: { + label: 'GitHub', + defaultView: { + look: 'primary', + icon: 'icon-github', + color: 'success', + }, + }, + }, + ], + }, + ]), + ); + }), +]; -export const manifestEmptyHandler = rest.get(umbracoPath('/package/manifest'), (_req, res, ctx) => { - return res( - // Respond with a 200 status code - ctx.status(200), - ctx.json([]), - ); -}); +export const manifestEmptyHandlers = [ + rest.get(umbracoPath('/manifest/manifest/private'), (_req, res, ctx) => { + return res(ctx.status(200), ctx.json([])); + }), + rest.get(umbracoPath('/manifest/manifest/public'), (_req, res, ctx) => { + return res(ctx.status(200), ctx.json([])); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/views/edit/block-workspace-view-edit-content-no-router.element.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/views/edit/block-workspace-view-edit-content-no-router.element.ts index f4d7f0f520..af2be3b183 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/views/edit/block-workspace-view-edit-content-no-router.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/views/edit/block-workspace-view-edit-content-no-router.element.ts @@ -4,7 +4,7 @@ import { css, html, customElement, state, repeat } from '@umbraco-cms/backoffice import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { UmbContentTypeContainerStructureHelper } from '@umbraco-cms/backoffice/content-type'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import type { PropertyTypeContainerModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import type { UmbPropertyTypeContainerModel } from '@umbraco-cms/backoffice/content-type'; import type { UmbWorkspaceViewElement } from '@umbraco-cms/backoffice/extension-registry'; /** @@ -20,7 +20,7 @@ export class UmbBlockWorkspaceViewEditContentNoRouterElement extends UmbLitEleme private _hasRootGroups = false; @state() - _tabs?: Array; + _tabs?: Array; @state() private _activeTabId?: string | null | undefined; diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/views/edit/block-workspace-view-edit-tab.element.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/views/edit/block-workspace-view-edit-tab.element.ts index ff6c616007..2450e465c2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/views/edit/block-workspace-view-edit-tab.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/views/edit/block-workspace-view-edit-tab.element.ts @@ -1,10 +1,9 @@ import { UMB_BLOCK_WORKSPACE_CONTEXT } from '../../block-workspace.context-token.js'; import { css, html, customElement, property, state, repeat } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; -import type { UmbContentTypeModel } from '@umbraco-cms/backoffice/content-type'; +import type { UmbContentTypeModel, UmbPropertyTypeContainerModel } from '@umbraco-cms/backoffice/content-type'; import { UmbContentTypeContainerStructureHelper } from '@umbraco-cms/backoffice/content-type'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import type { PropertyTypeContainerModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; import './block-workspace-view-edit-properties.element.js'; // eslint-disable-next-line import/order @@ -43,7 +42,7 @@ export class UmbBlockWorkspaceViewEditTabElement extends UmbLitElement { hideSingleGroup = false; @state() - _groups: Array = []; + _groups: Array = []; @state() _hasProperties = false; diff --git a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/views/edit/block-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/views/edit/block-workspace-view-edit.element.ts index 5a9aa48c74..f2b1f19f23 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/views/edit/block-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/block/block/workspace/views/edit/block-workspace-view-edit.element.ts @@ -3,12 +3,11 @@ import type { UmbBlockWorkspaceElementManagerNames } from '../../block-workspace import type { UmbBlockWorkspaceViewEditTabElement } from './block-workspace-view-edit-tab.element.js'; import { css, html, customElement, state, repeat, property } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; -import type { UmbContentTypeModel } from '@umbraco-cms/backoffice/content-type'; +import type { UmbContentTypeModel, UmbPropertyTypeContainerModel } from '@umbraco-cms/backoffice/content-type'; import { UmbContentTypeContainerStructureHelper } from '@umbraco-cms/backoffice/content-type'; import type { UmbRoute, UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/backoffice/router'; import { encodeFolderName } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import type { PropertyTypeContainerModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; import type { ManifestWorkspaceView, UmbWorkspaceViewElement } from '@umbraco-cms/backoffice/extension-registry'; @customElement('umb-block-workspace-view-edit') @@ -35,7 +34,7 @@ export class UmbBlockWorkspaceViewEditElement extends UmbLitElement implements U private _routes: UmbRoute[] = []; @state() - _tabs?: Array; + _tabs?: Array; @state() private _routerPath?: string; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth-flow.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth-flow.ts index 4ced20b66d..82455be922 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth-flow.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth-flow.ts @@ -89,6 +89,7 @@ export class UmbAuthFlow { // state readonly #configuration: AuthorizationServiceConfiguration; readonly #redirectUri: string; + readonly #postLogoutRedirectUri: string; readonly #clientId: string; readonly #scope: string; @@ -99,10 +100,12 @@ export class UmbAuthFlow { constructor( openIdConnectUrl: string, redirectUri: string, + postLogoutRedirectUri: string, clientId = 'umbraco-back-office', scope = 'offline_access', ) { this.#redirectUri = redirectUri; + this.#postLogoutRedirectUri = postLogoutRedirectUri; this.#clientId = clientId; this.#scope = scope; @@ -187,15 +190,23 @@ export class UmbAuthFlow { } /** - * This method will make an authorization request to the server. + * Make an authorization request to the server using the specified identity provider. + * This method will redirect the user to the authorization endpoint of the server. * - * @param username The username to use for the authorization request. It will be provided to the OpenID server as a hint. + * @param identityProvider The identity provider to use for the authorization request. + * @param usernameHint (Optional) The username to use for the authorization request. It will be provided to the OpenID server as a hint. */ - makeAuthorizationRequest(username?: string): void { + makeAuthorizationRequest(identityProvider: string, usernameHint?: string): void { const extras: StringMap = { prompt: 'consent', access_type: 'offline' }; - if (username) { - extras['login_hint'] = username; + // If the identity provider is not 'Umbraco', we will add it to the extras. + if (identityProvider !== 'Umbraco') { + extras['identity_provider'] = identityProvider; + } + + // If there is a username hint, we will add it to the extras. + if (usernameHint) { + extras['login_hint'] = usernameHint; } // create a request @@ -275,7 +286,7 @@ export class UmbAuthFlow { // which will redirect the user back to the client // and the client will then try and log in again (if the user is not logged in) // which will redirect the user to the login page - location.href = `${this.#configuration.endSessionEndpoint}?post_logout_redirect_uri=${this.#redirectUri}`; + location.href = `${this.#configuration.endSessionEndpoint}?post_logout_redirect_uri=${this.#postLogoutRedirectUri}`; } /** diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth.context.ts index f457655b18..be37177cc0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth.context.ts @@ -1,3 +1,4 @@ +import { umbExtensionsRegistry } from '../extension-registry/index.js'; import { UmbAuthFlow } from './auth-flow.js'; import { UMB_AUTH_CONTEXT } from './auth.context.token.js'; import type { UmbOpenApiConfiguration } from './models/openApiConfiguration.js'; @@ -5,11 +6,15 @@ import { OpenAPI } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbContextBase } from '@umbraco-cms/backoffice/class-api'; import { UmbBooleanState } from '@umbraco-cms/backoffice/observable-api'; +import { ReplaySubject, filter, switchMap } from '@umbraco-cms/backoffice/external/rxjs'; export class UmbAuthContext extends UmbContextBase { #isAuthorized = new UmbBooleanState(false); readonly isAuthorized = this.#isAuthorized.asObservable(); + #isInitialized = new ReplaySubject(1); + readonly isInitialized = this.#isInitialized.asObservable().pipe(filter((isInitialized) => isInitialized)); + #isBypassed = false; #serverUrl; #backofficePath; @@ -21,14 +26,16 @@ export class UmbAuthContext extends UmbContextBase { this.#serverUrl = serverUrl; this.#backofficePath = backofficePath; - this.#authFlow = new UmbAuthFlow(serverUrl, this.#getRedirectUrl()); + this.#authFlow = new UmbAuthFlow(serverUrl, this.getRedirectUrl(), this.getPostLogoutRedirectUrl()); } /** * Initiates the login flow. + * @param identityProvider The provider to use for login. Default is 'Umbraco'. + * @param usernameHint The username hint to use for login. */ - makeAuthorizationRequest() { - return this.#authFlow.makeAuthorizationRequest(); + makeAuthorizationRequest(identityProvider = 'Umbraco', usernameHint?: string) { + return this.#authFlow.makeAuthorizationRequest(identityProvider, usernameHint); } /** @@ -88,6 +95,16 @@ export class UmbAuthContext extends UmbContextBase { return this.#authFlow.clearTokenStorage(); } + /** + * Handles the case where the user has timed out, i.e. the token has expired. + * This will clear the token storage and set the user as unauthorized. + * @memberof UmbAuthContext + */ + timeOut() { + this.clearTokenStorage(); + this.#isAuthorized.setValue(false); + } + /** * Signs the user out by removing any tokens from the browser. * @memberof UmbAuthContext @@ -141,7 +158,19 @@ export class UmbAuthContext extends UmbContextBase { }; } - #getRedirectUrl() { + setInitialized() { + this.#isInitialized.next(true); + } + + getAuthProviders() { + return this.isInitialized.pipe(switchMap(() => umbExtensionsRegistry.byType('authProvider'))); + } + + getRedirectUrl() { return `${window.location.origin}${this.#backofficePath}`; } + + getPostLogoutRedirectUrl() { + return `${window.location.origin}${this.#backofficePath.endsWith('/') ? this.#backofficePath : this.#backofficePath + '/'}logout`; + } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/components/auth-provider-default.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/components/auth-provider-default.element.ts new file mode 100644 index 0000000000..c6c10745c1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/components/auth-provider-default.element.ts @@ -0,0 +1,55 @@ +import type { ManifestAuthProvider } from '../../extension-registry/models/index.js'; +import type { UmbAuthProviderDefaultProps } from '../types.js'; +import { UmbLitElement } from '../../lit-element/lit-element.element.js'; +import { UmbTextStyles } from '../../style/index.js'; +import { css, customElement, html, nothing, property } from '@umbraco-cms/backoffice/external/lit'; + +@customElement('umb-auth-provider-default') +export class UmbAuthProviderDefaultElement extends UmbLitElement implements UmbAuthProviderDefaultProps { + @property({ attribute: false }) + manifest!: ManifestAuthProvider; + + @property({ attribute: false }) + onSubmit!: (providerName: string, loginHint?: string) => void; + + connectedCallback(): void { + super.connectedCallback(); + this.setAttribute('part', 'auth-provider-default'); + } + + render() { + return html` + this.onSubmit(this.manifest.forProviderName)} + id="auth-provider-button" + .label=${this.manifest.meta?.label ?? this.manifest.forProviderName} + .look=${this.manifest.meta?.defaultView?.look ?? 'outline'} + .color=${this.manifest.meta?.defaultView?.color ?? 'default'}> + ${this.manifest.meta?.defaultView?.icon + ? html`` + : nothing} + ${this.manifest.meta?.label ?? this.manifest.forProviderName} + + `; + } + + static styles = [ + UmbTextStyles, + css` + :host { + display: block; + } + + #auth-provider-button { + width: 100%; + } + `, + ]; +} + +declare global { + interface HTMLElementTagNameMap { + 'umb-auth-provider-default': UmbAuthProviderDefaultElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/components/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/components/index.ts new file mode 100644 index 0000000000..e5fdd6f189 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/components/index.ts @@ -0,0 +1 @@ +export * from './auth-provider-default.element.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/index.ts index e6dc7d478d..2f5cf6b67d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/auth/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/index.ts @@ -1,3 +1,9 @@ +import './components/index.js'; + export * from './auth.context.js'; export * from './auth.context.token.js'; +export * from './modals/index.js'; export * from './models/openApiConfiguration.js'; +export * from './components/index.js'; + +export type * from './types.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/manifests.ts new file mode 100644 index 0000000000..f0f6228203 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/manifests.ts @@ -0,0 +1,5 @@ +import type { ManifestTypes } from '../extension-registry/models/index.js'; +import { manifests as modalManifests } from './modals/manifests.js'; +import { manifests as providerManifests } from './providers/manifests.js'; + +export const manifests: Array = [...modalManifests, ...providerManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/index.ts new file mode 100644 index 0000000000..c574cd0af1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/index.ts @@ -0,0 +1 @@ +export * from './umb-app-auth-modal.token.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/manifests.ts new file mode 100644 index 0000000000..315736dd1f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/manifests.ts @@ -0,0 +1,10 @@ +import type { ManifestModal } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [ + { + type: 'modal', + alias: 'Umb.Modal.AppAuth', + name: 'Umb App Auth Modal', + js: () => import('./umb-app-auth-modal.element.js'), + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/umb-app-auth-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/umb-app-auth-modal.element.ts new file mode 100644 index 0000000000..9fb5122908 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/umb-app-auth-modal.element.ts @@ -0,0 +1,92 @@ +import { UmbModalBaseElement } from '../../modal/index.js'; +import type { UmbModalAppAuthConfig, UmbModalAppAuthValue } from './umb-app-auth-modal.token.js'; +import { css, customElement, html } from '@umbraco-cms/backoffice/external/lit'; +import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; + +@customElement('umb-app-auth-modal') +export class UmbAppAuthModalElement extends UmbModalBaseElement { + get props() { + return { + userLoginState: this.data?.userLoginState ?? 'loggingIn', + onSubmit: this.onSubmit, + }; + } + + get headline() { + return this.data?.userLoginState === 'timedOut' + ? this.localize.term('login_instruction') + : this.localize.term( + [ + 'login_greeting0', + 'login_greeting1', + 'login_greeting2', + 'login_greeting3', + 'login_greeting4', + 'login_greeting5', + 'login_greeting6', + ][new Date().getDay()], + ); + } + + render() { + return html` + +

${this.headline}

+ ${this.data?.userLoginState === 'timedOut' + ? html`

${this.localize.term('login_timeout')}

` + : ''} + +
+ `; + } + + private onSubmit = (providerName: string) => { + this.value = { providerName }; + this._submitModal(); + }; + + static styles = [ + UmbTextStyles, + css` + :host { + display: block; + + --umb-body-layout-color-background: #fff; + } + + #login-layout { + width: 380px; + max-width: 80vw; + min-height: 327px; + } + + #greeting { + width: 100%; + color: var(--umb-login-header-color, var(--uui-color-interactive)); + text-align: center; + font-weight: 400; + font-size: var(--umb-login-header-font-size, 2rem); + line-height: 1.2; + margin: 0; + } + + #providers { + display: flex; + flex-direction: column; + gap: var(--uui-size-space-5); + } + `, + ]; +} + +export default UmbAppAuthModalElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-app-auth-modal': UmbAppAuthModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/umb-app-auth-modal.token.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/umb-app-auth-modal.token.ts new file mode 100644 index 0000000000..97dd990b68 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/modals/umb-app-auth-modal.token.ts @@ -0,0 +1,26 @@ +import { UmbModalToken } from '../../modal/token/index.js'; +import type { UmbUserLoginState } from '../types.js'; + +export type UmbModalAppAuthConfig = { + userLoginState: UmbUserLoginState; +}; + +export type UmbModalAppAuthValue = { + /** + * The name of the provider that the user has selected to authenticate with. + * @required + */ + providerName?: string; + + /** + * The login hint that the user has provided to the provider. + * @optional + */ + loginHint?: string; +}; + +export const UMB_MODAL_APP_AUTH = new UmbModalToken('Umb.Modal.AppAuth', { + modal: { + type: 'dialog', + }, +}); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/providers/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/providers/manifests.ts new file mode 100644 index 0000000000..5c8e7dc2de --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/providers/manifests.ts @@ -0,0 +1,18 @@ +import type { ManifestAuthProvider } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [ + { + type: 'authProvider', + alias: 'Umb.AuthProviders.Umbraco', + name: 'Umbraco login provider', + forProviderName: 'Umbraco', + weight: 1000, + meta: { + label: 'Sign in with Umbraco', + defaultView: { + icon: 'icon-umbraco', + look: 'primary', + }, + }, + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/types.ts new file mode 100644 index 0000000000..7074b49380 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/types.ts @@ -0,0 +1,26 @@ +import type { ManifestAuthProvider } from '../extension-registry/index.js'; + +/** + * User login state that can be used to determine the current state of the user. + * @example 'loggedIn' + */ +export type UmbUserLoginState = 'loggingIn' | 'loggedOut' | 'timedOut'; + +export interface UmbAuthProviderDefaultProps { + /** + * The manifest for the registered provider. + */ + manifest?: ManifestAuthProvider; + + /** + * The current user login state. + */ + userLoginState?: UmbUserLoginState; + + /** + * Callback that is called when the user selects a provider. + * @param providerName The name of the provider that the user selected. + * @param loginHint The login hint to use for login if available. + */ + onSubmit: (providerName: string, loginHint?: string) => void; +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-view.manager.test.ts b/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-view.manager.test.ts index 02eed66b19..0f6024506d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-view.manager.test.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/collection/collection-view.manager.test.ts @@ -1,9 +1,9 @@ import { expect } from '@open-wc/testing'; +import type { ManifestCollectionView } from '../extension-registry/models/index.js'; +import { umbExtensionsRegistry } from '../extension-registry/index.js'; import { UmbCollectionViewManager } from './collection-view.manager.js'; import { Observable } from '@umbraco-cms/backoffice/external/rxjs'; import { UmbControllerHostElementMixin } from '@umbraco-cms/backoffice/controller-api'; -import type { ManifestCollectionView } from '@umbraco-cms/backoffice/extension-registry'; -import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; import { customElement } from '@umbraco-cms/backoffice/external/lit'; @customElement('test-my-controller-host') diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/backoffice-modal-container/backoffice-modal-container.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/backoffice-modal-container/backoffice-modal-container.element.ts index 48d0068860..bd01e0acf1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/backoffice-modal-container/backoffice-modal-container.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/backoffice-modal-container/backoffice-modal-container.element.ts @@ -1,6 +1,6 @@ import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import type { CSSResultGroup } from '@umbraco-cms/backoffice/external/lit'; -import { css, html, repeat, customElement, state, nothing } from '@umbraco-cms/backoffice/external/lit'; +import { css, html, repeat, customElement, state, nothing, property } from '@umbraco-cms/backoffice/external/lit'; import type { UmbModalManagerContext, UmbModalContext } from '@umbraco-cms/backoffice/modal'; import { UMB_MODAL_MANAGER_CONTEXT, UmbModalElement } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; @@ -13,6 +13,9 @@ export class UmbBackofficeModalContainerElement extends UmbLitElement { @state() _modals: Array = []; + @property({ reflect: true, attribute: 'fill-background' }) + fillBackground = false; + private _modalManager?: UmbModalManagerContext; constructor() { @@ -35,6 +38,7 @@ export class UmbBackofficeModalContainerElement extends UmbLitElement { /** We cannot render the umb-modal element directly in the uui-modal-container because it wont get recognized by UUI. * We therefore have a helper class which creates the uui-modal element and returns it. */ #createModalElements(modals: Array) { + this.removeAttribute('fill-background'); const oldValue = this._modals; this._modals = modals; @@ -61,6 +65,15 @@ export class UmbBackofficeModalContainerElement extends UmbLitElement { modal.addEventListener('umb:destroy', this.#onCloseEnd.bind(this, modal.key)); this._modalElementMap.set(modal.key, modalElement); + + // If any of the modals are fillBackground, set the fillBackground property to true + if (modal.backdropBackground) { + this.fillBackground = true; + this.shadowRoot + ?.getElementById('container') + ?.style.setProperty('--backdrop-background', modal.backdropBackground); + } + this.requestUpdate(); }); } @@ -78,13 +91,13 @@ export class UmbBackofficeModalContainerElement extends UmbLitElement { render() { return html` - + ${this._modals.length > 0 ? repeat( this._modals, (modal) => modal.key, (modal) => this.#renderModal(modal.key), - ) + ) : ''} `; @@ -97,6 +110,10 @@ export class UmbBackofficeModalContainerElement extends UmbLitElement { position: absolute; z-index: 1000; } + + :host([fill-background]) #container::after { + background: var(--backdrop-background); + } `, ]; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/body-layout/body-layout.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/body-layout/body-layout.element.ts index 1d589df449..22be2b754a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/body-layout/body-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/body-layout/body-layout.element.ts @@ -134,7 +134,7 @@ export class UmbBodyLayoutElement extends LitElement { css` :host { display: flex; - background-color: var(--uui-color-background); + background-color: var(--umb-body-layout-color-background, var(--uui-color-background)); width: 100%; height: 100%; flex-direction: column; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/content-type/repository/structure/content-type-structure-server-data-source-base.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content-type/repository/structure/content-type-structure-server-data-source-base.ts index 262330e804..8765c33180 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/content-type/repository/structure/content-type-structure-server-data-source-base.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content-type/repository/structure/content-type-structure-server-data-source-base.ts @@ -1,11 +1,18 @@ import type { UmbPagedModel } from '../../../repository/types.js'; import type { UmbContentTypeStructureDataSource } from './content-type-structure-data-source.interface.js'; -import type { AllowedContentTypeModel, ItemResponseModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; +// Temp type +type AllowedContentTypeModel = { + id: string; + name: string; + description?: string | null; + icon?: string | null; +}; + export interface UmbContentTypeStructureServerDataSourceBaseArgs< - ServerItemType extends ItemResponseModelBaseModel, + ServerItemType extends AllowedContentTypeModel, ClientItemType extends { unique: string }, > { getAllowedChildrenOf: (unique: string | null) => Promise>; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/content-type/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content-type/types.ts index 22f3f1c9f0..76eeb7a5c7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/content-type/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content-type/types.ts @@ -1,10 +1,11 @@ -import type { CompositionTypeModel, PropertyTypeModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import type { CompositionTypeModel } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbReferenceByUnique } from '@umbraco-cms/backoffice/models'; export type UmbPropertyContainerTypes = 'Group' | 'Tab'; + export interface UmbPropertyTypeContainerModel { id: string; - parent: { id: string } | null; + parent: { id: string } | null; // TODO: change to unique name: string | null; type: UmbPropertyContainerTypes; sortOrder: number; @@ -31,8 +32,29 @@ export interface UmbPropertyTypeScaffoldModel extends Omit { +export interface UmbPropertyTypeModel { dataType: { unique: string }; + id: string; // TODO: change to unique + container?: { id: string } | null; // TODO: change to unique + sortOrder: number; + alias: string; + name: string; + description?: string | null; + variesByCulture: boolean; + variesBySegment: boolean; + validation: UmbPropertyTypeValidationModel; + appearance: UmbPropertyTypeAppearanceModel; +} + +export interface UmbPropertyTypeValidationModel { + mandatory: boolean; + mandatoryMessage?: string | null; + regEx?: string | null; + regExMessage?: string | null; +} + +export interface UmbPropertyTypeAppearanceModel { + labelOnTop: boolean; } export interface UmbContentTypeSortModel { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/content-type/workspace/views/design/content-type-design-editor.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/content-type/workspace/views/design/content-type-design-editor.element.ts index 3e8df8b21b..ff110e8543 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/content-type/workspace/views/design/content-type-design-editor.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/content-type/workspace/views/design/content-type-design-editor.element.ts @@ -7,13 +7,11 @@ import { UMB_COMPOSITION_PICKER_MODAL, UmbContentTypeContainerStructureHelper, type UmbContentTypeModel, + type UmbPropertyTypeContainerModel, } from '@umbraco-cms/backoffice/content-type'; import { encodeFolderName } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import { - CompositionTypeModel, - type PropertyTypeContainerModelBaseModel, -} from '@umbraco-cms/backoffice/external/backend-api'; +import { CompositionTypeModel } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbRoute, UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/backoffice/router'; import type { ManifestWorkspaceViewContentTypeDesignEditorKind, @@ -26,7 +24,7 @@ import { UmbSorterController } from '@umbraco-cms/backoffice/sorter'; @customElement('umb-content-type-design-editor') export class UmbContentTypeDesignEditorElement extends UmbLitElement implements UmbWorkspaceViewElement { - #sorter = new UmbSorterController(this, { + #sorter = new UmbSorterController(this, { getUniqueOfElement: (element) => element.getAttribute('data-umb-tabs-id'), getUniqueOfModel: (tab) => tab.id, identifier: 'content-type-tabs-sorter', @@ -96,7 +94,7 @@ export class UmbContentTypeDesignEditorElement extends UmbLitElement implements private _routes: UmbRoute[] = []; @state() - _tabs?: Array; + _tabs?: Array; @state() private _routerPath?: string; @@ -233,7 +231,7 @@ export class UmbContentTypeDesignEditorElement extends UmbLitElement implements this._routes = routes; } - async #requestRemoveTab(tab: PropertyTypeContainerModelBaseModel | undefined) { + async #requestRemoveTab(tab: UmbPropertyTypeContainerModel | undefined) { // TODO: Localize this: const modalData: UmbConfirmModalData = { headline: 'Delete tab', @@ -290,7 +288,7 @@ export class UmbContentTypeDesignEditorElement extends UmbLitElement implements }, 100); } - async #tabNameChanged(event: InputEvent, tab: PropertyTypeContainerModelBaseModel) { + async #tabNameChanged(event: InputEvent, tab: UmbPropertyTypeContainerModel) { this._activeTabId = tab.id; let newName = (event.target as HTMLInputElement).value; @@ -432,7 +430,7 @@ export class UmbContentTypeDesignEditorElement extends UmbLitElement implements `; } - renderTab(tab: PropertyTypeContainerModelBaseModel) { + renderTab(tab: UmbPropertyTypeContainerModel) { const path = this._routerPath + (tab.name ? '/tab/' + encodeFolderName(tab.name) : '/tab'); const tabActive = path === this._activePath; const ownedTab = this._tabsStructureHelper.isOwnerChildContainer(tab.id!) ?? false; @@ -446,7 +444,7 @@ export class UmbContentTypeDesignEditorElement extends UmbLitElement implements `; } - renderTabInner(tab: PropertyTypeContainerModelBaseModel, tabActive: boolean, ownedTab: boolean) { + renderTabInner(tab: UmbPropertyTypeContainerModel, tabActive: boolean, ownedTab: boolean) { // TODO: Localize this: if (this._sortModeActive) { return html`
@@ -486,13 +484,13 @@ export class UmbContentTypeDesignEditorElement extends UmbLitElement implements } } - #changeOrderNumber(tab: PropertyTypeContainerModelBaseModel, e: UUIInputEvent) { + #changeOrderNumber(tab: UmbPropertyTypeContainerModel, e: UUIInputEvent) { if (!e.target.value || !tab.id) return; const sortOrder = Number(e.target.value); this._tabsStructureHelper.partialUpdateContainer(tab.id, { sortOrder }); } - renderDeleteFor(tab: PropertyTypeContainerModelBaseModel) { + renderDeleteFor(tab: UmbPropertyTypeContainerModel) { return html`] >; + #entityContext = new UmbEntityContext(this); + #generateApiArgs() { - if (!this._props.entityType || this._props.unique !== undefined) return; + if (!this._props.entityType || this._props.unique === undefined) return; + + this.#entityContext.setEntityType(this._props.entityType); + this.#entityContext.setUnique(this._props.unique); this._apiArgs = (manifest: ManifestEntityAction) => { return [{ entityType: this._props.entityType!, unique: this._props.unique!, meta: manifest.meta }]; @@ -59,7 +65,7 @@ export class UmbEntityActionListElement extends UmbLitElement { .filter=${this._filter} .elementProps=${this._props} .apiArgs=${this._apiArgs}> - ` + ` : ''; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity/entity.context-token.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity/entity.context-token.ts new file mode 100644 index 0000000000..252e6ef906 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity/entity.context-token.ts @@ -0,0 +1,4 @@ +import type { UmbEntityContext } from './entity.context.js'; +import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; + +export const UMB_ENTITY_CONTEXT = new UmbContextToken('UmbEntityContext'); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity/entity.context.test.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity/entity.context.test.ts new file mode 100644 index 0000000000..e01e1937b0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity/entity.context.test.ts @@ -0,0 +1,77 @@ +import { expect } from '@open-wc/testing'; +import { UmbEntityContext } from './entity.context.js'; +import { UMB_ENTITY_CONTEXT } from './entity.context-token.js'; +import { Observable } from '@umbraco-cms/backoffice/external/rxjs'; +import { customElement } from '@umbraco-cms/backoffice/external/lit'; +import { UmbElementMixin } from '@umbraco-cms/backoffice/element-api'; + +@customElement('umb-test-host') +export class UmbTestHostElement extends UmbElementMixin(HTMLElement) {} + +@customElement('umb-test-child') +export class UmbTestChildElement extends UmbElementMixin(HTMLElement) {} + +describe('UmbEntityContext', () => { + let context: UmbEntityContext; + let host: UmbTestHostElement; + let child: UmbTestChildElement; + + beforeEach(() => { + host = new UmbTestHostElement(); + child = new UmbTestChildElement(); + host.appendChild(child); + document.body.appendChild(host); + context = new UmbEntityContext(host); + }); + + describe('Public API', () => { + describe('properties', () => { + it('has a entity type property', () => { + expect(context).to.have.property('entityType').to.be.an.instanceOf(Observable); + }); + + it('has a unique property', () => { + expect(context).to.have.property('unique').to.be.an.instanceOf(Observable); + }); + }); + + describe('methods', () => { + it('has a getEntityType method', () => { + expect(context).to.have.property('getEntityType').that.is.a('function'); + }); + + it('has a setEntityType method', () => { + expect(context).to.have.property('setEntityType').that.is.a('function'); + }); + + it('has a getUnique method', () => { + expect(context).to.have.property('getUnique').that.is.a('function'); + }); + + it('has a setUnique method', () => { + expect(context).to.have.property('setUnique').that.is.a('function'); + }); + }); + }); + + describe('set and get entity type', () => { + it('should set entity type', () => { + context.setEntityType('entity-type'); + expect(context.getEntityType()).to.equal('entity-type'); + }); + }); + + describe('set and get unique', () => { + it('should set unique', () => { + context.setUnique('unique-value'); + expect(context.getUnique()).to.equal('unique-value'); + }); + }); + + describe('it is provided as a context', () => { + it('should be provided as a context', async () => { + const providedContext = await child.getContext(UMB_ENTITY_CONTEXT); + expect(providedContext).to.equal(context); + }); + }); +}); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity/entity.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity/entity.context.ts new file mode 100644 index 0000000000..8f193465ae --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity/entity.context.ts @@ -0,0 +1,63 @@ +import { UMB_ENTITY_CONTEXT } from './entity.context-token.js'; +import { UmbContextBase } from '@umbraco-cms/backoffice/class-api'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UmbStringState } from '@umbraco-cms/backoffice/observable-api'; + +/** + * Provides the entity context + * @export + * @class UmbEntityContext + * @extends {UmbContextBase} + */ +export class UmbEntityContext extends UmbContextBase { + #entityType = new UmbStringState(undefined); + public readonly entityType = this.#entityType.asObservable(); + + #unique = new UmbStringState(undefined); + public readonly unique = this.#unique.asObservable(); + + /** + * Creates an instance of UmbEntityContext. + * @param {UmbControllerHost} host + * @memberof UmbEntityContext + */ + constructor(host: UmbControllerHost) { + super(host, UMB_ENTITY_CONTEXT); + } + + /** + * Set the entity type + * @param {string | undefined} entityType + * @memberof UmbEntityContext + */ + setEntityType(entityType: string | undefined) { + this.#entityType.setValue(entityType); + } + + /** + * Get the entity type + * @returns {string | undefined} + * @memberof UmbEntityContext + */ + getEntityType(): string | undefined { + return this.#entityType.getValue(); + } + + /** + * Set the unique + * @param {string | null | undefined} unique + * @memberof UmbEntityContext + */ + setUnique(unique: string | null | undefined) { + this.#unique.setValue(unique); + } + + /** + * Get the unique + * @returns {string | null | undefined} + * @memberof UmbEntityContext + */ + getUnique() { + return this.#unique.getValue(); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/entity/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entity/index.ts new file mode 100644 index 0000000000..74308b50c9 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entity/index.ts @@ -0,0 +1,2 @@ +export { UMB_ENTITY_CONTEXT } from './entity.context-token.js'; +export { UmbEntityContext } from './entity.context.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/entry-point.ts similarity index 72% rename from src/Umbraco.Web.UI.Client/src/packages/core/index.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/entry-point.ts index 9795777970..1f88e46d6a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/entry-point.ts @@ -1,3 +1,4 @@ +import { UMB_AUTH_CONTEXT } from './auth/auth.context.token.js'; import { UmbBackofficeNotificationContainerElement, UmbBackofficeModalContainerElement } from './components/index.js'; import { UmbActionEventContext } from './action/action-event.context.js'; import { manifests as coreManifests } from './manifests.js'; @@ -5,6 +6,9 @@ import { UmbNotificationContext } from '@umbraco-cms/backoffice/notification'; import { UmbModalManagerContext } from '@umbraco-cms/backoffice/modal'; import { UmbExtensionsApiInitializer, type UmbEntryPointOnInit } from '@umbraco-cms/backoffice/extension-api'; +// TODO temp relative import until modules ship a component sub module +import './menu/components/index.js'; + export const onInit: UmbEntryPointOnInit = (host, extensionRegistry) => { new UmbExtensionsApiInitializer(host, extensionRegistry, 'globalContext', [host]); new UmbExtensionsApiInitializer(host, extensionRegistry, 'store', [host]); @@ -14,12 +18,17 @@ export const onInit: UmbEntryPointOnInit = (host, extensionRegistry) => { extensionRegistry.registerMany(coreManifests); const notificationContainerElement = new UmbBackofficeNotificationContainerElement(); - host.appendChild(notificationContainerElement); + host.shadowRoot?.appendChild(notificationContainerElement); const modalContainerElement = new UmbBackofficeModalContainerElement(); - host.appendChild(modalContainerElement); + host.shadowRoot?.appendChild(modalContainerElement); new UmbNotificationContext(host); new UmbModalManagerContext(host); new UmbActionEventContext(host); + + host.consumeContext(UMB_AUTH_CONTEXT, (authContext) => { + // Initialize the auth context to let the app context know that the core module is ready + authContext.setInitialized(); + }); }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/index.ts index 9d63aeebbb..7442cd6ae9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/index.ts @@ -1,6 +1,6 @@ export * from './conditions/index.js'; -export * from './interfaces/index.js'; -export * from './models/index.js'; +export type * from './interfaces/index.js'; +export type * from './models/index.js'; export * from './registry.js'; export * from './utils/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/auth-provider.model.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/auth-provider.model.ts new file mode 100644 index 0000000000..116be49a73 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/auth-provider.model.ts @@ -0,0 +1,80 @@ +import type { ManifestElement } from '@umbraco-cms/backoffice/extension-api'; +import type { UUIInterfaceColor, UUIInterfaceLook } from '@umbraco-cms/backoffice/external/uui'; + +/** + * Represents an authentication provider that can be used to authenticate users. + * The provider needs to be registered in the API that the authorization request is sent to in order to be used. + * + * @see {forProviderName} for the provider name that this provider is for. + */ +export interface ManifestAuthProvider extends ManifestElement { + type: 'authProvider'; + + /** + * The provider name that this provider is for. + * @examples 'Umbraco.Github' + */ + forProviderName: string; + + meta?: MetaAuthProvider; +} + +export interface MetaAuthProvider { + /** + * The label of the provider that is shown to the user. + */ + label?: string; + + /** + * The default view of the provider that is shown to the user. + * If no element is provided, then the button will be rendered as a @see {UUIButtonElement} using these options. + */ + defaultView?: { + /** + * The icon of the provider that is shown to the user. + * @examples ['icon-cloud', 'icon-github', 'icon-google', 'icon-facebook', 'icon-twitter', 'icon-x', 'icon-microsoft'] + * @default 'icon-cloud' + */ + icon?: string; + + /** + * The color of the provider that is shown to the user. + * @default 'secondary' + */ + color?: UUIInterfaceColor; + + /** + * The look of the provider that is shown to the user. + * @default 'default' + */ + look?: UUIInterfaceLook; + }; + + /** + * The behavior of the provider when it is used. + */ + behavior?: { + /** + * If true, the Umbraco backoffice login will be disabled. + * @default false + */ + denyLocalLogin?: boolean; + + /** + * If true, the user will be redirected to the provider's login page immediately. + * @default false + */ + autoRedirect?: boolean; + }; + + /** + * The linking options of the provider when it is used. + */ + linking?: { + /** + * If true, the user will be able to link the provider to an existing account. + * @default false + */ + allowManualLinking?: boolean; + }; +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts index 1c9e270269..a997488da7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts @@ -1,3 +1,4 @@ +import type { ManifestAuthProvider } from './auth-provider.model.js'; import type { ManifestBlockEditorCustomView } from './block-editor-custom-view.model.js'; import type { ManifestCollection } from './collection.models.js'; import type { ManifestCollectionView } from './collection-view.model.js'; @@ -66,6 +67,7 @@ import type { ManifestEntryPoint, } from '@umbraco-cms/backoffice/extension-api'; +export type * from './auth-provider.model.js'; export type * from './block-editor-custom-view.model.js'; export type * from './collection.models.js'; export type * from './collection-action.model.js'; @@ -135,12 +137,13 @@ export type ManifestWorkspaces = ManifestWorkspace | ManifestWorkspaceRoutableKi export type ManifestWorkspaceViews = ManifestWorkspaceView | ManifestWorkspaceViewContentTypeDesignEditorKind; export type ManifestTypes = + | ManifestAuthProvider | ManifestBundle - | ManifestCondition | ManifestBlockEditorCustomView | ManifestCollection | ManifestCollectionView | ManifestCollectionAction + | ManifestCondition | ManifestDashboard | ManifestDashboardCollection | ManifestDynamicRootOrigin diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/LICENSE b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/LICENSE index 4300c4cd5e..66b4696927 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/LICENSE +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/LICENSE @@ -1,8 +1,16 @@ Lucide License -ISC License +ISC License Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2022. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--- + +Simple Icons +CC0 1.0 Universal license + +The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. +You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission. diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icon-dictionary.json b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icon-dictionary.json index d46fcbda58..99fb107023 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icon-dictionary.json +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icon-dictionary.json @@ -1486,7 +1486,7 @@ { "name": "icon-newspaper-alt", "file": "newspaper.svg", - "legacy":true + "legacy": true }, { "name": "icon-newspaper", @@ -1737,22 +1737,22 @@ { "name": "icon-price-dollar", "file": "badge-dollar-sign.svg", - "legacy":true + "legacy": true }, { "name": "icon-price-euro", "file": "badge-euro.svg", - "legacy":true + "legacy": true }, { "name": "icon-price-pound", "file": "badge-pound-sterling.svg", - "legacy":true + "legacy": true }, { "name": "icon-price-yen", "file": "badge-japanese-yen", - "legacy":true + "legacy": true }, { "name": "icon-print", @@ -2429,10 +2429,6 @@ "name": "icon-zoom-in", "file": "zoom-in.svg" }, - - - - { "name": "icon-zoom-out", "file": "zoom-out.svg" @@ -2446,6 +2442,48 @@ "file": "database.svg" } ], + "simpleIcons": [ + { + "name": "icon-azure", + "file": "microsoftazure.svg" + }, + { + "name": "icon-facebook", + "file": "facebook.svg" + }, + { + "name": "icon-gitbook", + "file": "gitbook.svg" + }, + { + "name": "icon-github", + "file": "github.svg" + }, + { + "name": "icon-gitlab", + "file": "gitlab.svg" + }, + { + "name": "icon-google", + "file": "google.svg" + }, + { + "name": "icon-linkedin", + "file": "linkedin.svg" + }, + { + "name": "icon-mastodon", + "file": "mastodon.svg" + }, + { + "name": "icon-microsoft", + "file": "microsoft.svg" + }, + { + "name": "icon-twitter-x", + "file": "x.svg" + } + ], "umbraco": [ { "name": "icon-umbraco", diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-azure.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-azure.js new file mode 100644 index 0000000000..c12ff1b97a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-azure.js @@ -0,0 +1 @@ +export default `Microsoft Azure`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-facebook.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-facebook.js new file mode 100644 index 0000000000..d3cd4e5675 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-facebook.js @@ -0,0 +1 @@ +export default `Facebook`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-gitbook.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-gitbook.js new file mode 100644 index 0000000000..3cad1567e6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-gitbook.js @@ -0,0 +1 @@ +export default `GitBook`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-github.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-github.js new file mode 100644 index 0000000000..e7308eddeb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-github.js @@ -0,0 +1 @@ +export default `GitHub`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-gitlab.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-gitlab.js new file mode 100644 index 0000000000..8ef7e658bd --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-gitlab.js @@ -0,0 +1 @@ +export default `GitLab`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-google.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-google.js new file mode 100644 index 0000000000..4e6e37bca7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-google.js @@ -0,0 +1 @@ +export default `Google`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-linkedin.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-linkedin.js new file mode 100644 index 0000000000..1fb9aeb48b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-linkedin.js @@ -0,0 +1 @@ +export default `LinkedIn`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-mastodon.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-mastodon.js new file mode 100644 index 0000000000..40c5f92c70 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-mastodon.js @@ -0,0 +1 @@ +export default `Mastodon`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-microsoft.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-microsoft.js new file mode 100644 index 0000000000..48d6ba0e9a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-microsoft.js @@ -0,0 +1 @@ +export default `Microsoft`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-twitter-x.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-twitter-x.js new file mode 100644 index 0000000000..34ab0e67f8 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-twitter-x.js @@ -0,0 +1 @@ +export default `X`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-twitter.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-twitter.js new file mode 100644 index 0000000000..3e61a109ac --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-twitter.js @@ -0,0 +1,6 @@ +export default ` + Twitter + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-umbraco.js b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-umbraco.js index 268d9f441c..1bcdcda9fc 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-umbraco.js +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icon-umbraco.js @@ -1,3 +1,5 @@ -export default ` - -`; \ No newline at end of file +export default ` + + +`; \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icons.json b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icons.json index 5cb738864a..1fe1f387f0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icons.json +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/icons/icons.json @@ -1 +1 @@ -[{"name":"icon-activity","path":"./icons/icon-activity.js"},{"name":"icon-add","path":"./icons/icon-add.js"},{"name":"icon-addressbook","path":"./icons/icon-addressbook.js"},{"name":"icon-alarm-clock","path":"./icons/icon-alarm-clock.js"},{"name":"icon-alert-alt","path":"./icons/icon-alert-alt.js"},{"name":"icon-alert","path":"./icons/icon-alert.js"},{"name":"icon-alt","path":"./icons/icon-alt.js"},{"name":"icon-anchor","path":"./icons/icon-anchor.js"},{"name":"icon-app","path":"./icons/icon-app.js"},{"name":"icon-application-window-alt","path":"./icons/icon-application-window-alt.js"},{"name":"icon-application-window","path":"./icons/icon-application-window.js"},{"name":"icon-arrivals","path":"./icons/icon-arrivals.js"},{"name":"icon-arrow-down","path":"./icons/icon-arrow-down.js"},{"name":"icon-arrow-left","path":"./icons/icon-arrow-left.js"},{"name":"icon-arrow-right","path":"./icons/icon-arrow-right.js"},{"name":"icon-arrow-up","path":"./icons/icon-arrow-up.js"},{"name":"icon-attachment","path":"./icons/icon-attachment.js"},{"name":"icon-autofill","path":"./icons/icon-autofill.js"},{"name":"icon-award","path":"./icons/icon-award.js"},{"name":"icon-axis-rotation-2","path":"./icons/icon-axis-rotation-2.js"},{"name":"icon-axis-rotation-3","path":"./icons/icon-axis-rotation-3.js"},{"name":"icon-axis-rotation","path":"./icons/icon-axis-rotation.js"},{"name":"icon-backspace","path":"./icons/icon-backspace.js"},{"name":"icon-badge-add","path":"./icons/icon-badge-add.js"},{"name":"icon-badge-remove","path":"./icons/icon-badge-remove.js"},{"name":"icon-badge-restricted","legacy":true,"path":"./icons/icon-badge-restricted.js"},{"name":"icon-bar-chart","path":"./icons/icon-bar-chart.js"},{"name":"icon-barcode","path":"./icons/icon-barcode.js"},{"name":"icon-bars","path":"./icons/icon-bars.js"},{"name":"icon-battery-full","path":"./icons/icon-battery-full.js"},{"name":"icon-battery-low","path":"./icons/icon-battery-low.js"},{"name":"icon-beer-glass","path":"./icons/icon-beer-glass.js"},{"name":"icon-bell-off","path":"./icons/icon-bell-off.js"},{"name":"icon-bell","path":"./icons/icon-bell.js"},{"name":"icon-binarycode","path":"./icons/icon-binarycode.js"},{"name":"icon-bird","path":"./icons/icon-bird.js"},{"name":"icon-birthday-cake","path":"./icons/icon-birthday-cake.js"},{"name":"icon-block","path":"./icons/icon-block.js"},{"name":"icon-bluetooth","path":"./icons/icon-bluetooth.js"},{"name":"icon-boat-shipping","path":"./icons/icon-boat-shipping.js"},{"name":"icon-bones","path":"./icons/icon-bones.js"},{"name":"icon-book-alt-2","path":"./icons/icon-book-alt-2.js"},{"name":"icon-book-alt","path":"./icons/icon-book-alt.js"},{"name":"icon-book","path":"./icons/icon-book.js"},{"name":"icon-bookmark","path":"./icons/icon-bookmark.js"},{"name":"icon-books","path":"./icons/icon-books.js"},{"name":"icon-box-alt","path":"./icons/icon-box-alt.js"},{"name":"icon-box-open","path":"./icons/icon-box-open.js"},{"name":"icon-box","path":"./icons/icon-box.js"},{"name":"icon-brackets","path":"./icons/icon-brackets.js"},{"name":"icon-brick","path":"./icons/icon-brick.js"},{"name":"icon-briefcase","path":"./icons/icon-briefcase.js"},{"name":"icon-browser-window","path":"./icons/icon-browser-window.js"},{"name":"icon-brush-alt-2","path":"./icons/icon-brush-alt-2.js"},{"name":"icon-brush-alt","path":"./icons/icon-brush-alt.js"},{"name":"icon-brush","path":"./icons/icon-brush.js"},{"name":"icon-bug","path":"./icons/icon-bug.js"},{"name":"icon-bulleted-list","path":"./icons/icon-bulleted-list.js"},{"name":"icon-burn","path":"./icons/icon-burn.js"},{"name":"icon-bus","path":"./icons/icon-bus.js"},{"name":"icon-calculator","path":"./icons/icon-calculator.js"},{"name":"icon-calendar-alt","path":"./icons/icon-calendar-alt.js"},{"name":"icon-calendar","path":"./icons/icon-calendar.js"},{"name":"icon-camcorder","legacy":true,"path":"./icons/icon-camcorder.js"},{"name":"icon-camera-roll","path":"./icons/icon-camera-roll.js"},{"name":"icon-candy","path":"./icons/icon-candy.js"},{"name":"icon-caps-lock","path":"./icons/icon-caps-lock.js"},{"name":"icon-car","path":"./icons/icon-car.js"},{"name":"icon-categories","path":"./icons/icon-categories.js"},{"name":"icon-certificate","path":"./icons/icon-certificate.js"},{"name":"icon-chart-curve","path":"./icons/icon-chart-curve.js"},{"name":"icon-chart","path":"./icons/icon-chart.js"},{"name":"icon-chat-active","legacy":true,"path":"./icons/icon-chat-active.js"},{"name":"icon-chat","path":"./icons/icon-chat.js"},{"name":"icon-check","path":"./icons/icon-check.js"},{"name":"icon-checkbox-dotted","path":"./icons/icon-checkbox-dotted.js"},{"name":"icon-checkbox-empty","legacy":true,"path":"./icons/icon-checkbox-empty.js"},{"name":"icon-checkbox","path":"./icons/icon-checkbox.js"},{"name":"icon-chip-alt","legacy":true,"path":"./icons/icon-chip-alt.js"},{"name":"icon-chip","path":"./icons/icon-chip.js"},{"name":"icon-cinema","path":"./icons/icon-cinema.js"},{"name":"icon-circle-dotted-active","path":"./icons/icon-circle-dotted-active.js"},{"name":"icon-circle-dotted","path":"./icons/icon-circle-dotted.js"},{"name":"icon-circuits","path":"./icons/icon-circuits.js"},{"name":"icon-client","legacy":true,"path":"./icons/icon-client.js"},{"name":"icon-cloud-drive","path":"./icons/icon-cloud-drive.js"},{"name":"icon-cloud-upload","path":"./icons/icon-cloud-upload.js"},{"name":"icon-cloud","path":"./icons/icon-cloud.js"},{"name":"icon-cloudy","path":"./icons/icon-cloudy.js"},{"name":"icon-clubs","path":"./icons/icon-clubs.js"},{"name":"icon-cocktail","path":"./icons/icon-cocktail.js"},{"name":"icon-code","path":"./icons/icon-code.js"},{"name":"icon-coffee","path":"./icons/icon-coffee.js"},{"name":"icon-coin-euro","path":"./icons/icon-coin-euro.js"},{"name":"icon-coin-yen","path":"./icons/icon-coin-yen.js"},{"name":"icon-coins-alt","legacy":true,"path":"./icons/icon-coins-alt.js"},{"name":"icon-coins","path":"./icons/icon-coins.js"},{"name":"icon-color-bucket","path":"./icons/icon-color-bucket.js"},{"name":"icon-colorpicker","path":"./icons/icon-colorpicker.js"},{"name":"icon-columns","path":"./icons/icon-columns.js"},{"name":"icon-combination-lock-open","path":"./icons/icon-combination-lock-open.js"},{"name":"icon-combination-lock","path":"./icons/icon-combination-lock.js"},{"name":"icon-command","path":"./icons/icon-command.js"},{"name":"icon-company","path":"./icons/icon-company.js"},{"name":"icon-compress","path":"./icons/icon-compress.js"},{"name":"icon-connection","path":"./icons/icon-connection.js"},{"name":"icon-console","path":"./icons/icon-console.js"},{"name":"icon-contrast","path":"./icons/icon-contrast.js"},{"name":"icon-conversation-alt","path":"./icons/icon-conversation-alt.js"},{"name":"icon-conversation","legacy":true,"path":"./icons/icon-conversation.js"},{"name":"icon-coverflow","path":"./icons/icon-coverflow.js"},{"name":"icon-credit-card-alt","legacy":true,"path":"./icons/icon-credit-card-alt.js"},{"name":"icon-credit-card","path":"./icons/icon-credit-card.js"},{"name":"icon-crop","path":"./icons/icon-crop.js"},{"name":"icon-crosshair","path":"./icons/icon-crosshair.js"},{"name":"icon-crown-alt","legacy":true,"path":"./icons/icon-crown-alt.js"},{"name":"icon-crown","path":"./icons/icon-crown.js"},{"name":"icon-cupcake","legacy":true,"path":"./icons/icon-cupcake.js"},{"name":"icon-curve","path":"./icons/icon-curve.js"},{"name":"icon-cut","path":"./icons/icon-cut.js"},{"name":"icon-dashboard","path":"./icons/icon-dashboard.js"},{"name":"icon-defrag","path":"./icons/icon-defrag.js"},{"name":"icon-delete-key","path":"./icons/icon-delete-key.js"},{"name":"icon-delete","path":"./icons/icon-delete.js"},{"name":"icon-departure","path":"./icons/icon-departure.js"},{"name":"icon-desktop","legacy":true,"path":"./icons/icon-desktop.js"},{"name":"icon-diagnostics","path":"./icons/icon-diagnostics.js"},{"name":"icon-diagonal-arrow-alt","path":"./icons/icon-diagonal-arrow-alt.js"},{"name":"icon-diagonal-arrow","path":"./icons/icon-diagonal-arrow.js"},{"name":"icon-diamond","path":"./icons/icon-diamond.js"},{"name":"icon-diamonds","path":"./icons/icon-diamonds.js"},{"name":"icon-dice","path":"./icons/icon-dice.js"},{"name":"icon-diploma-alt","legacy":true,"path":"./icons/icon-diploma-alt.js"},{"name":"icon-diploma","path":"./icons/icon-diploma.js"},{"name":"icon-directions-alt","path":"./icons/icon-directions-alt.js"},{"name":"icon-directions","path":"./icons/icon-directions.js"},{"name":"icon-disc","path":"./icons/icon-disc.js"},{"name":"icon-disk-image","path":"./icons/icon-disk-image.js"},{"name":"icon-display","path":"./icons/icon-display.js"},{"name":"icon-dna","path":"./icons/icon-dna.js"},{"name":"icon-dock-connector","path":"./icons/icon-dock-connector.js"},{"name":"icon-document-dashed-line","path":"./icons/icon-document-dashed-line.js"},{"name":"icon-document","path":"./icons/icon-document.js"},{"name":"icon-documents","path":"./icons/icon-documents.js"},{"name":"icon-donate","legacy":true,"path":"./icons/icon-donate.js"},{"name":"icon-door-open-alt","legacy":true,"path":"./icons/icon-door-open-alt.js"},{"name":"icon-door-open","path":"./icons/icon-door-open.js"},{"name":"icon-download-alt","path":"./icons/icon-download-alt.js"},{"name":"icon-download","path":"./icons/icon-download.js"},{"name":"icon-drop","path":"./icons/icon-drop.js"},{"name":"icon-eco","path":"./icons/icon-eco.js"},{"name":"icon-economy","legacy":true,"path":"./icons/icon-economy.js"},{"name":"icon-edit","path":"./icons/icon-edit.js"},{"name":"icon-employee","legacy":true,"path":"./icons/icon-employee.js"},{"name":"icon-energy-saving-bulb","path":"./icons/icon-energy-saving-bulb.js"},{"name":"icon-enter","path":"./icons/icon-enter.js"},{"name":"icon-equalizer","path":"./icons/icon-equalizer.js"},{"name":"icon-escape","path":"./icons/icon-escape.js"},{"name":"icon-ethernet","path":"./icons/icon-ethernet.js"},{"name":"icon-eye","path":"./icons/icon-eye.js"},{"name":"icon-facebook-like","path":"./icons/icon-facebook-like.js"},{"name":"icon-factory","path":"./icons/icon-factory.js"},{"name":"icon-favorite","path":"./icons/icon-favorite.js"},{"name":"icon-file-cabinet","path":"./icons/icon-file-cabinet.js"},{"name":"icon-files","path":"./icons/icon-files.js"},{"name":"icon-filter","path":"./icons/icon-filter.js"},{"name":"icon-fingerprint","path":"./icons/icon-fingerprint.js"},{"name":"icon-fire","path":"./icons/icon-fire.js"},{"name":"icon-firewire","legacy":true,"path":"./icons/icon-firewire.js"},{"name":"icon-flag-alt","path":"./icons/icon-flag-alt.js"},{"name":"icon-flag","path":"./icons/icon-flag.js"},{"name":"icon-flash","path":"./icons/icon-flash.js"},{"name":"icon-flashlight","path":"./icons/icon-flashlight.js"},{"name":"icon-flowerpot","path":"./icons/icon-flowerpot.js"},{"name":"icon-folder","path":"./icons/icon-folder.js"},{"name":"icon-folders","path":"./icons/icon-folders.js"},{"name":"icon-font","path":"./icons/icon-font.js"},{"name":"icon-food","path":"./icons/icon-food.js"},{"name":"icon-footprints","path":"./icons/icon-footprints.js"},{"name":"icon-forking","path":"./icons/icon-forking.js"},{"name":"icon-frame-alt","legacy":true,"path":"./icons/icon-frame-alt.js"},{"name":"icon-frame","path":"./icons/icon-frame.js"},{"name":"icon-fullscreen-alt","path":"./icons/icon-fullscreen-alt.js"},{"name":"icon-fullscreen","path":"./icons/icon-fullscreen.js"},{"name":"icon-game","path":"./icons/icon-game.js"},{"name":"icon-geometry","legacy":true,"path":"./icons/icon-geometry.js"},{"name":"icon-gift","path":"./icons/icon-gift.js"},{"name":"icon-glasses","path":"./icons/icon-glasses.js"},{"name":"icon-globe-alt","path":"./icons/icon-globe-alt.js"},{"name":"icon-globe-asia","legacy":true,"path":"./icons/icon-globe-asia.js"},{"name":"icon-globe-europe-africa","legacy":true,"path":"./icons/icon-globe-europe-africa.js"},{"name":"icon-globe-inverted-america","legacy":true,"path":"./icons/icon-globe-inverted-america.js"},{"name":"icon-globe-inverted-asia","legacy":true,"path":"./icons/icon-globe-inverted-asia.js"},{"name":"icon-globe-inverted-europe-africa","legacy":true,"path":"./icons/icon-globe-inverted-europe-africa.js"},{"name":"icon-globe","path":"./icons/icon-globe.js"},{"name":"icon-gps","path":"./icons/icon-gps.js"},{"name":"icon-graduate","path":"./icons/icon-graduate.js"},{"name":"icon-grid","path":"./icons/icon-grid.js"},{"name":"icon-hammer","path":"./icons/icon-hammer.js"},{"name":"icon-hand-active-alt","legacy":true,"path":"./icons/icon-hand-active-alt.js"},{"name":"icon-hand-active","path":"./icons/icon-hand-active.js"},{"name":"icon-hand-pointer-alt","legacy":true,"path":"./icons/icon-hand-pointer-alt.js"},{"name":"icon-hand-pointer","path":"./icons/icon-hand-pointer.js"},{"name":"icon-handshake","path":"./icons/icon-handshake.js"},{"name":"icon-handtool-alt","legacy":true,"path":"./icons/icon-handtool-alt.js"},{"name":"icon-handtool","path":"./icons/icon-handtool.js"},{"name":"icon-hard-drive-alt","legacy":true,"path":"./icons/icon-hard-drive-alt.js"},{"name":"icon-hard-drive","legacy":true,"path":"./icons/icon-hard-drive.js"},{"name":"icon-headphones","path":"./icons/icon-headphones.js"},{"name":"icon-headset","legacy":true,"path":"./icons/icon-headset.js"},{"name":"icon-hearts","path":"./icons/icon-hearts.js"},{"name":"icon-height","path":"./icons/icon-height.js"},{"name":"icon-help-alt","path":"./icons/icon-help-alt.js"},{"name":"icon-help","path":"./icons/icon-help.js"},{"name":"icon-home","path":"./icons/icon-home.js"},{"name":"icon-hourglass","path":"./icons/icon-hourglass.js"},{"name":"icon-imac","legacy":true,"path":"./icons/icon-imac.js"},{"name":"icon-inbox-full","legacy":true,"path":"./icons/icon-inbox-full.js"},{"name":"icon-inbox","path":"./icons/icon-inbox.js"},{"name":"icon-indent","path":"./icons/icon-indent.js"},{"name":"icon-infinity","path":"./icons/icon-infinity.js"},{"name":"icon-info","path":"./icons/icon-info.js"},{"name":"icon-invoice","legacy":true,"path":"./icons/icon-invoice.js"},{"name":"icon-ipad","legacy":true,"path":"./icons/icon-ipad.js"},{"name":"icon-iphone","legacy":true,"path":"./icons/icon-iphone.js"},{"name":"icon-item-arrangement","legacy":true,"path":"./icons/icon-item-arrangement.js"},{"name":"icon-junk","path":"./icons/icon-junk.js"},{"name":"icon-key","path":"./icons/icon-key.js"},{"name":"icon-keyboard","path":"./icons/icon-keyboard.js"},{"name":"icon-lab","path":"./icons/icon-lab.js"},{"name":"icon-laptop","path":"./icons/icon-laptop.js"},{"name":"icon-layers-alt","legacy":true,"path":"./icons/icon-layers-alt.js"},{"name":"icon-layers","path":"./icons/icon-layers.js"},{"name":"icon-layout","path":"./icons/icon-layout.js"},{"name":"icon-left-double-arrow","path":"./icons/icon-left-double-arrow.js"},{"name":"icon-legal","path":"./icons/icon-legal.js"},{"name":"icon-lense","legacy":true,"path":"./icons/icon-lense.js"},{"name":"icon-library","path":"./icons/icon-library.js"},{"name":"icon-light-down","path":"./icons/icon-light-down.js"},{"name":"icon-light-up","path":"./icons/icon-light-up.js"},{"name":"icon-lightning","path":"./icons/icon-lightning.js"},{"name":"icon-link","path":"./icons/icon-link.js"},{"name":"icon-list","path":"./icons/icon-list.js"},{"name":"icon-load","legacy":true,"path":"./icons/icon-load.js"},{"name":"icon-loading","legacy":true,"path":"./icons/icon-loading.js"},{"name":"icon-location-nearby","path":"./icons/icon-location-nearby.js"},{"name":"icon-lock","path":"./icons/icon-lock.js"},{"name":"icon-log-out","path":"./icons/icon-log-out.js"},{"name":"icon-logout","legacy":true,"path":"./icons/icon-logout.js"},{"name":"icon-loupe","legacy":true,"path":"./icons/icon-loupe.js"},{"name":"icon-magnet","path":"./icons/icon-magnet.js"},{"name":"icon-mailbox","path":"./icons/icon-mailbox.js"},{"name":"icon-map-alt","path":"./icons/icon-map-alt.js"},{"name":"icon-map-location","legacy":true,"path":"./icons/icon-map-location.js"},{"name":"icon-map-marker","path":"./icons/icon-map-marker.js"},{"name":"icon-map","path":"./icons/icon-map.js"},{"name":"icon-medal","path":"./icons/icon-medal.js"},{"name":"icon-medical-emergency","path":"./icons/icon-medical-emergency.js"},{"name":"icon-medicine","path":"./icons/icon-medicine.js"},{"name":"icon-meeting","legacy":true,"path":"./icons/icon-meeting.js"},{"name":"icon-megaphone","path":"./icons/icon-megaphone.js"},{"name":"icon-merge","path":"./icons/icon-merge.js"},{"name":"icon-message-open","path":"./icons/icon-message-open.js"},{"name":"icon-message-unopened","legacy":true,"path":"./icons/icon-message-unopened.js"},{"name":"icon-message","path":"./icons/icon-message.js"},{"name":"icon-microscope","path":"./icons/icon-microscope.js"},{"name":"icon-mindmap","legacy":true,"path":"./icons/icon-mindmap.js"},{"name":"icon-mobile","path":"./icons/icon-mobile.js"},{"name":"icon-mountain","path":"./icons/icon-mountain.js"},{"name":"icon-mouse-cursor","path":"./icons/icon-mouse-cursor.js"},{"name":"icon-mouse","path":"./icons/icon-mouse.js"},{"name":"icon-movie-alt","path":"./icons/icon-movie-alt.js"},{"name":"icon-movie","path":"./icons/icon-movie.js"},{"name":"icon-multiple-credit-cards","path":"./icons/icon-multiple-credit-cards.js"},{"name":"icon-music","path":"./icons/icon-music.js"},{"name":"icon-name-badge","legacy":true,"path":"./icons/icon-name-badge.js"},{"name":"icon-navigation-bottom","legacy":true,"path":"./icons/icon-navigation-bottom.js"},{"name":"icon-navigation-down","legacy":true,"path":"./icons/icon-navigation-down.js"},{"name":"icon-navigation-first","legacy":true,"path":"./icons/icon-navigation-first.js"},{"name":"icon-navigation-horizontal","legacy":true,"path":"./icons/icon-navigation-horizontal.js"},{"name":"icon-navigation-last","legacy":true,"path":"./icons/icon-navigation-last.js"},{"name":"icon-navigation-left","legacy":true,"path":"./icons/icon-navigation-left.js"},{"name":"icon-navigation-right","legacy":true,"path":"./icons/icon-navigation-right.js"},{"name":"icon-navigation-road","legacy":true,"path":"./icons/icon-navigation-road.js"},{"name":"icon-navigation-up","legacy":true,"path":"./icons/icon-navigation-up.js"},{"name":"icon-navigation-vertical","legacy":true,"path":"./icons/icon-navigation-vertical.js"},{"name":"icon-navigation","legacy":true,"path":"./icons/icon-navigation.js"},{"name":"icon-navigational-arrow","path":"./icons/icon-navigational-arrow.js"},{"name":"icon-network-alt","path":"./icons/icon-network-alt.js"},{"name":"icon-newspaper-alt","legacy":true,"path":"./icons/icon-newspaper-alt.js"},{"name":"icon-newspaper","path":"./icons/icon-newspaper.js"},{"name":"icon-next-media","legacy":true,"path":"./icons/icon-next-media.js"},{"name":"icon-next","legacy":true,"path":"./icons/icon-next.js"},{"name":"icon-nodes","legacy":true,"path":"./icons/icon-nodes.js"},{"name":"icon-notepad-alt","legacy":true,"path":"./icons/icon-notepad-alt.js"},{"name":"icon-notepad","path":"./icons/icon-notepad.js"},{"name":"icon-old-key","path":"./icons/icon-old-key.js"},{"name":"icon-old-phone","legacy":true,"path":"./icons/icon-old-phone.js"},{"name":"icon-operator","path":"./icons/icon-operator.js"},{"name":"icon-ordered-list","path":"./icons/icon-ordered-list.js"},{"name":"icon-out","path":"./icons/icon-out.js"},{"name":"icon-outbox","legacy":true,"path":"./icons/icon-outbox.js"},{"name":"icon-outdent","path":"./icons/icon-outdent.js"},{"name":"icon-page-add","path":"./icons/icon-page-add.js"},{"name":"icon-page-down","path":"./icons/icon-page-down.js"},{"name":"icon-page-remove","path":"./icons/icon-page-remove.js"},{"name":"icon-page-restricted","path":"./icons/icon-page-restricted.js"},{"name":"icon-page-up","path":"./icons/icon-page-up.js"},{"name":"icon-paint-roller","legacy":true,"path":"./icons/icon-paint-roller.js"},{"name":"icon-palette","path":"./icons/icon-palette.js"},{"name":"icon-panel-show","path":"./icons/icon-panel-show.js"},{"name":"icon-pannel-close","path":"./icons/icon-pannel-close.js"},{"name":"icon-paper-bag","legacy":true,"path":"./icons/icon-paper-bag.js"},{"name":"icon-paper-plane-alt","path":"./icons/icon-paper-plane-alt.js"},{"name":"icon-paper-plane","path":"./icons/icon-paper-plane.js"},{"name":"icon-partly-cloudy","path":"./icons/icon-partly-cloudy.js"},{"name":"icon-paste-in","legacy":true,"path":"./icons/icon-paste-in.js"},{"name":"icon-pause","path":"./icons/icon-pause.js"},{"name":"icon-pc","legacy":true,"path":"./icons/icon-pc.js"},{"name":"icon-people-alt-2","legacy":true,"path":"./icons/icon-people-alt-2.js"},{"name":"icon-people-alt","legacy":true,"path":"./icons/icon-people-alt.js"},{"name":"icon-people-female","legacy":true,"path":"./icons/icon-people-female.js"},{"name":"icon-people","path":"./icons/icon-people.js"},{"name":"icon-phone-ring","path":"./icons/icon-phone-ring.js"},{"name":"icon-phone","path":"./icons/icon-phone.js"},{"name":"icon-photo-album","path":"./icons/icon-photo-album.js"},{"name":"icon-picture","path":"./icons/icon-picture.js"},{"name":"icon-pictures-alt-2","path":"./icons/icon-pictures-alt-2.js"},{"name":"icon-pictures-alt","legacy":true,"path":"./icons/icon-pictures-alt.js"},{"name":"icon-pictures","path":"./icons/icon-pictures.js"},{"name":"icon-pie-chart","path":"./icons/icon-pie-chart.js"},{"name":"icon-piggy-bank","path":"./icons/icon-piggy-bank.js"},{"name":"icon-pin-location","path":"./icons/icon-pin-location.js"},{"name":"icon-plane","path":"./icons/icon-plane.js"},{"name":"icon-planet","legacy":true,"path":"./icons/icon-planet.js"},{"name":"icon-play","path":"./icons/icon-play.js"},{"name":"icon-playing-cards","legacy":true,"path":"./icons/icon-playing-cards.js"},{"name":"icon-playlist","path":"./icons/icon-playlist.js"},{"name":"icon-plugin","path":"./icons/icon-plugin.js"},{"name":"icon-podcast","path":"./icons/icon-podcast.js"},{"name":"icon-poll","legacy":true,"path":"./icons/icon-poll.js"},{"name":"icon-post-it","path":"./icons/icon-post-it.js"},{"name":"icon-power-outlet","legacy":true,"path":"./icons/icon-power-outlet.js"},{"name":"icon-power","path":"./icons/icon-power.js"},{"name":"icon-presentation","path":"./icons/icon-presentation.js"},{"name":"icon-previous-media","path":"./icons/icon-previous-media.js"},{"name":"icon-previous","path":"./icons/icon-previous.js"},{"name":"icon-price-dollar","legacy":true,"path":"./icons/icon-price-dollar.js"},{"name":"icon-price-euro","legacy":true,"path":"./icons/icon-price-euro.js"},{"name":"icon-price-pound","legacy":true,"path":"./icons/icon-price-pound.js"},{"name":"icon-print","path":"./icons/icon-print.js"},{"name":"icon-printer-alt","legacy":true,"path":"./icons/icon-printer-alt.js"},{"name":"icon-projector","path":"./icons/icon-projector.js"},{"name":"icon-pulse","path":"./icons/icon-pulse.js"},{"name":"icon-pushpin","path":"./icons/icon-pushpin.js"},{"name":"icon-qr-code","path":"./icons/icon-qr-code.js"},{"name":"icon-quote","path":"./icons/icon-quote.js"},{"name":"icon-radio-alt","path":"./icons/icon-radio-alt.js"},{"name":"icon-radio-receiver","path":"./icons/icon-radio-receiver.js"},{"name":"icon-radio","path":"./icons/icon-radio.js"},{"name":"icon-rain","path":"./icons/icon-rain.js"},{"name":"icon-rate","legacy":true,"path":"./icons/icon-rate.js"},{"name":"icon-re-post","path":"./icons/icon-re-post.js"},{"name":"icon-readonly","legacy":true,"path":"./icons/icon-readonly.js"},{"name":"icon-receipt-alt","path":"./icons/icon-receipt-alt.js"},{"name":"icon-reception","path":"./icons/icon-reception.js"},{"name":"icon-record","legacy":true,"path":"./icons/icon-record.js"},{"name":"icon-redo","path":"./icons/icon-redo.js"},{"name":"icon-refresh","path":"./icons/icon-refresh.js"},{"name":"icon-remote","legacy":true,"path":"./icons/icon-remote.js"},{"name":"icon-remove","path":"./icons/icon-remove.js"},{"name":"icon-repeat-one","path":"./icons/icon-repeat-one.js"},{"name":"icon-repeat","path":"./icons/icon-repeat.js"},{"name":"icon-reply-arrow","path":"./icons/icon-reply-arrow.js"},{"name":"icon-return-to-top","legacy":true,"path":"./icons/icon-return-to-top.js"},{"name":"icon-right-double-arrow","legacy":true,"path":"./icons/icon-right-double-arrow.js"},{"name":"icon-roadsign","legacy":true,"path":"./icons/icon-roadsign.js"},{"name":"icon-rocket","path":"./icons/icon-rocket.js"},{"name":"icon-rss","path":"./icons/icon-rss.js"},{"name":"icon-ruler-alt","path":"./icons/icon-ruler-alt.js"},{"name":"icon-ruler","path":"./icons/icon-ruler.js"},{"name":"icon-satellite-dish","path":"./icons/icon-satellite-dish.js"},{"name":"icon-save","path":"./icons/icon-save.js"},{"name":"icon-scan","path":"./icons/icon-scan.js"},{"name":"icon-school","path":"./icons/icon-school.js"},{"name":"icon-screensharing","path":"./icons/icon-screensharing.js"},{"name":"icon-script-alt","legacy":true,"path":"./icons/icon-script-alt.js"},{"name":"icon-script","path":"./icons/icon-script.js"},{"name":"icon-scull","path":"./icons/icon-scull.js"},{"name":"icon-search","path":"./icons/icon-search.js"},{"name":"icon-sensor","path":"./icons/icon-sensor.js"},{"name":"icon-server-alt","legacy":true,"path":"./icons/icon-server-alt.js"},{"name":"icon-server","path":"./icons/icon-server.js"},{"name":"icon-settings-alt","legacy":true,"path":"./icons/icon-settings-alt.js"},{"name":"icon-settings","path":"./icons/icon-settings.js"},{"name":"icon-share-alt","path":"./icons/icon-share-alt.js"},{"name":"icon-share","path":"./icons/icon-share.js"},{"name":"icon-sharing-iphone","path":"./icons/icon-sharing-iphone.js"},{"name":"icon-shield","path":"./icons/icon-shield.js"},{"name":"icon-shift","path":"./icons/icon-shift.js"},{"name":"icon-shipping-box","path":"./icons/icon-shipping-box.js"},{"name":"icon-shipping","path":"./icons/icon-shipping.js"},{"name":"icon-shoe","path":"./icons/icon-shoe.js"},{"name":"icon-shopping-basket-alt-2","legacy":true,"path":"./icons/icon-shopping-basket-alt-2.js"},{"name":"icon-shopping-basket-alt","path":"./icons/icon-shopping-basket-alt.js"},{"name":"icon-shopping-basket","path":"./icons/icon-shopping-basket.js"},{"name":"icon-shuffle","path":"./icons/icon-shuffle.js"},{"name":"icon-sience","path":"./icons/icon-sience.js"},{"name":"icon-single-note","path":"./icons/icon-single-note.js"},{"name":"icon-sitemap","legacy":true,"path":"./icons/icon-sitemap.js"},{"name":"icon-sleep","path":"./icons/icon-sleep.js"},{"name":"icon-slideshow","legacy":true,"path":"./icons/icon-slideshow.js"},{"name":"icon-smiley-inverted","legacy":true,"path":"./icons/icon-smiley-inverted.js"},{"name":"icon-smiley","path":"./icons/icon-smiley.js"},{"name":"icon-snow","path":"./icons/icon-snow.js"},{"name":"icon-sound-low","path":"./icons/icon-sound-low.js"},{"name":"icon-sound-medium","legacy":true,"path":"./icons/icon-sound-medium.js"},{"name":"icon-sound-off","path":"./icons/icon-sound-off.js"},{"name":"icon-sound-waves","path":"./icons/icon-sound-waves.js"},{"name":"icon-sound","path":"./icons/icon-sound.js"},{"name":"icon-spades","path":"./icons/icon-spades.js"},{"name":"icon-speaker","path":"./icons/icon-speaker.js"},{"name":"icon-speed-gauge","path":"./icons/icon-speed-gauge.js"},{"name":"icon-split","path":"./icons/icon-split.js"},{"name":"icon-sprout","path":"./icons/icon-sprout.js"},{"name":"icon-squiggly-line","legacy":true,"path":"./icons/icon-squiggly-line.js"},{"name":"icon-ssd","legacy":true,"path":"./icons/icon-ssd.js"},{"name":"icon-stacked-disks","legacy":true,"path":"./icons/icon-stacked-disks.js"},{"name":"icon-stamp","legacy":true,"path":"./icons/icon-stamp.js"},{"name":"icon-stop-alt","path":"./icons/icon-stop-alt.js"},{"name":"icon-stop-hand","legacy":true,"path":"./icons/icon-stop-hand.js"},{"name":"icon-stop","path":"./icons/icon-stop.js"},{"name":"icon-store","path":"./icons/icon-store.js"},{"name":"icon-stream","legacy":true,"path":"./icons/icon-stream.js"},{"name":"icon-sunny","path":"./icons/icon-sunny.js"},{"name":"icon-sweatshirt","legacy":true,"path":"./icons/icon-sweatshirt.js"},{"name":"icon-sync","path":"./icons/icon-sync.js"},{"name":"icon-t-shirt","path":"./icons/icon-t-shirt.js"},{"name":"icon-tab-key","path":"./icons/icon-tab-key.js"},{"name":"icon-tag","path":"./icons/icon-tag.js"},{"name":"icon-tags","path":"./icons/icon-tags.js"},{"name":"icon-takeaway-cup","legacy":true,"path":"./icons/icon-takeaway-cup.js"},{"name":"icon-target","path":"./icons/icon-target.js"},{"name":"icon-temperatrure-alt","path":"./icons/icon-temperatrure-alt.js"},{"name":"icon-temperature","path":"./icons/icon-temperature.js"},{"name":"icon-terminal","path":"./icons/icon-terminal.js"},{"name":"icon-theater","path":"./icons/icon-theater.js"},{"name":"icon-thumb-down","path":"./icons/icon-thumb-down.js"},{"name":"icon-thumb-up","path":"./icons/icon-thumb-up.js"},{"name":"icon-thumbnail-list","path":"./icons/icon-thumbnail-list.js"},{"name":"icon-thumbnails-small","path":"./icons/icon-thumbnails-small.js"},{"name":"icon-thumbnails","path":"./icons/icon-thumbnails.js"},{"name":"icon-ticket","path":"./icons/icon-ticket.js"},{"name":"icon-time","path":"./icons/icon-time.js"},{"name":"icon-timer","path":"./icons/icon-timer.js"},{"name":"icon-tools","legacy":true,"path":"./icons/icon-tools.js"},{"name":"icon-top","legacy":true,"path":"./icons/icon-top.js"},{"name":"icon-traffic-alt","legacy":true,"path":"./icons/icon-traffic-alt.js"},{"name":"icon-trafic","path":"./icons/icon-trafic.js"},{"name":"icon-train","path":"./icons/icon-train.js"},{"name":"icon-trash-alt-2","legacy":true,"path":"./icons/icon-trash-alt-2.js"},{"name":"icon-trash-alt","legacy":true,"path":"./icons/icon-trash-alt.js"},{"name":"icon-trash","path":"./icons/icon-trash.js"},{"name":"icon-tree","path":"./icons/icon-tree.js"},{"name":"icon-trophy","path":"./icons/icon-trophy.js"},{"name":"icon-truck","path":"./icons/icon-truck.js"},{"name":"icon-tv-old","path":"./icons/icon-tv-old.js"},{"name":"icon-tv","path":"./icons/icon-tv.js"},{"name":"icon-umb-content","legacy":true,"path":"./icons/icon-umb-content.js"},{"name":"icon-umb-developer","legacy":true,"path":"./icons/icon-umb-developer.js"},{"name":"icon-umb-media","legacy":true,"path":"./icons/icon-umb-media.js"},{"name":"icon-umb-settings","legacy":true,"path":"./icons/icon-umb-settings.js"},{"name":"icon-umb-users","legacy":true,"path":"./icons/icon-umb-users.js"},{"name":"icon-umbrella","path":"./icons/icon-umbrella.js"},{"name":"icon-undo","path":"./icons/icon-undo.js"},{"name":"icon-unlocked","path":"./icons/icon-unlocked.js"},{"name":"icon-untitled","legacy":true,"path":"./icons/icon-untitled.js"},{"name":"icon-usb-connector","legacy":true,"path":"./icons/icon-usb-connector.js"},{"name":"icon-usb","path":"./icons/icon-usb.js"},{"name":"icon-user-female","legacy":true,"path":"./icons/icon-user-female.js"},{"name":"icon-user-females-alt","legacy":true,"path":"./icons/icon-user-females-alt.js"},{"name":"icon-user-females","legacy":true,"path":"./icons/icon-user-females.js"},{"name":"icon-user-glasses","legacy":true,"path":"./icons/icon-user-glasses.js"},{"name":"icon-user","path":"./icons/icon-user.js"},{"name":"icon-users-alt","legacy":true,"path":"./icons/icon-users-alt.js"},{"name":"icon-users","path":"./icons/icon-users.js"},{"name":"icon-utilities","path":"./icons/icon-utilities.js"},{"name":"icon-vcard","path":"./icons/icon-vcard.js"},{"name":"icon-video","path":"./icons/icon-video.js"},{"name":"icon-voice","path":"./icons/icon-voice.js"},{"name":"icon-wall-plug","path":"./icons/icon-wall-plug.js"},{"name":"icon-wallet","path":"./icons/icon-wallet.js"},{"name":"icon-wand","path":"./icons/icon-wand.js"},{"name":"icon-webhook","path":"./icons/icon-webhook.js"},{"name":"icon-weight","path":"./icons/icon-weight.js"},{"name":"icon-width","path":"./icons/icon-width.js"},{"name":"icon-wifi","path":"./icons/icon-wifi.js"},{"name":"icon-window-popin","path":"./icons/icon-window-popin.js"},{"name":"icon-window-sizes","path":"./icons/icon-window-sizes.js"},{"name":"icon-wine-glass","path":"./icons/icon-wine-glass.js"},{"name":"icon-wrench","path":"./icons/icon-wrench.js"},{"name":"icon-wrong","path":"./icons/icon-wrong.js"},{"name":"icon-zip","path":"./icons/icon-zip.js"},{"name":"icon-zom-out","legacy":true,"path":"./icons/icon-zom-out.js"},{"name":"icon-zoom-in","path":"./icons/icon-zoom-in.js"},{"name":"icon-zoom-out","path":"./icons/icon-zoom-out.js"},{"name":"icon-star","path":"./icons/icon-star.js"},{"name":"icon-database","path":"./icons/icon-database.js"},{"name":"icon-umbraco","path":"./icons/icon-umbraco.js"},{"name":"icon-application-error","legacy":true,"path":"./icons/icon-application-error.js"},{"name":"icon-art-easel","legacy":true,"path":"./icons/icon-art-easel.js"},{"name":"icon-article","legacy":true,"path":"./icons/icon-article.js"},{"name":"icon-auction-hammer","legacy":true,"path":"./icons/icon-auction-hammer.js"},{"name":"icon-baby-stroller","legacy":true,"path":"./icons/icon-baby-stroller.js"},{"name":"icon-badge-count","legacy":true,"path":"./icons/icon-badge-count.js"},{"name":"icon-ball","legacy":true,"path":"./icons/icon-ball.js"},{"name":"icon-band-aid","legacy":true,"path":"./icons/icon-band-aid.js"},{"name":"icon-bill-dollar","legacy":true,"path":"./icons/icon-bill-dollar.js"},{"name":"icon-bill-euro","legacy":true,"path":"./icons/icon-bill-euro.js"},{"name":"icon-bill-pound","legacy":true,"path":"./icons/icon-bill-pound.js"},{"name":"icon-bill-yen","legacy":true,"path":"./icons/icon-bill-yen.js"},{"name":"icon-bill","legacy":true,"path":"./icons/icon-bill.js"},{"name":"icon-billboard","legacy":true,"path":"./icons/icon-billboard.js"},{"name":"icon-bills-dollar","legacy":true,"path":"./icons/icon-bills-dollar.js"},{"name":"icon-bills-euro","legacy":true,"path":"./icons/icon-bills-euro.js"},{"name":"icon-bills-pound","legacy":true,"path":"./icons/icon-bills-pound.js"},{"name":"icon-bills-yen","legacy":true,"path":"./icons/icon-bills-yen.js"},{"name":"icon-bills","legacy":true,"path":"./icons/icon-bills.js"},{"name":"icon-binoculars","legacy":true,"path":"./icons/icon-binoculars.js"},{"name":"icon-blueprint","legacy":true,"path":"./icons/icon-blueprint.js"},{"name":"icon-bomb","legacy":true,"path":"./icons/icon-bomb.js"},{"name":"icon-cash-register","legacy":true,"path":"./icons/icon-cash-register.js"},{"name":"icon-checkbox-dotted-active","legacy":true,"path":"./icons/icon-checkbox-dotted-active.js"},{"name":"icon-chess","legacy":true,"path":"./icons/icon-chess.js"},{"name":"icon-circus","legacy":true,"path":"./icons/icon-circus.js"},{"name":"icon-clothes-hanger","legacy":true,"path":"./icons/icon-clothes-hanger.js"},{"name":"icon-coin-dollar","legacy":true,"path":"./icons/icon-coin-dollar.js"},{"name":"icon-coin-pound","legacy":true,"path":"./icons/icon-coin-pound.js"},{"name":"icon-coin","legacy":true,"path":"./icons/icon-coin.js"},{"name":"icon-coins-dollar-alt","legacy":true,"path":"./icons/icon-coins-dollar-alt.js"},{"name":"icon-coins-dollar","legacy":true,"path":"./icons/icon-coins-dollar.js"},{"name":"icon-coins-euro-alt","legacy":true,"path":"./icons/icon-coins-euro-alt.js"},{"name":"icon-coins-euro","legacy":true,"path":"./icons/icon-coins-euro.js"},{"name":"icon-coins-pound-alt","legacy":true,"path":"./icons/icon-coins-pound-alt.js"},{"name":"icon-coins-pound","legacy":true,"path":"./icons/icon-coins-pound.js"},{"name":"icon-coins-yen-alt","legacy":true,"path":"./icons/icon-coins-yen-alt.js"},{"name":"icon-coins-yen","legacy":true,"path":"./icons/icon-coins-yen.js"},{"name":"icon-comb","legacy":true,"path":"./icons/icon-comb.js"},{"name":"icon-desk","legacy":true,"path":"./icons/icon-desk.js"},{"name":"icon-dollar-bag","legacy":true,"path":"./icons/icon-dollar-bag.js"},{"name":"icon-eject","legacy":true,"path":"./icons/icon-eject.js"},{"name":"icon-euro-bag","legacy":true,"path":"./icons/icon-euro-bag.js"},{"name":"icon-exit-fullscreen","legacy":true,"path":"./icons/icon-exit-fullscreen.js"},{"name":"icon-female-symbol","legacy":true,"path":"./icons/icon-female-symbol.js"},{"name":"icon-filter-arrows","legacy":true,"path":"./icons/icon-filter-arrows.js"},{"name":"icon-firewall","legacy":true,"path":"./icons/icon-firewall.js"},{"name":"icon-folder-open","legacy":true,"path":"./icons/icon-folder-open.js"},{"name":"icon-folder-outline","legacy":true,"path":"./icons/icon-folder-outline.js"},{"name":"icon-handprint","legacy":true,"path":"./icons/icon-handprint.js"},{"name":"icon-hat","legacy":true,"path":"./icons/icon-hat.js"},{"name":"icon-hd","legacy":true,"path":"./icons/icon-hd.js"},{"name":"icon-inactive-line","legacy":true,"path":"./icons/icon-inactive-line.js"},{"name":"icon-keychain","legacy":true,"path":"./icons/icon-keychain.js"},{"name":"icon-keyhole","legacy":true,"path":"./icons/icon-keyhole.js"},{"name":"icon-lightbulb-active","legacy":true,"path":"./icons/icon-lightbulb-active.js"},{"name":"icon-lightbulb","legacy":true,"path":"./icons/icon-lightbulb.js"},{"name":"icon-linux-tux","legacy":true,"path":"./icons/icon-linux-tux.js"},{"name":"icon-locate","legacy":true,"path":"./icons/icon-locate.js"},{"name":"icon-location-near-me","legacy":true,"path":"./icons/icon-location-near-me.js"},{"name":"icon-male-and-female","legacy":true,"path":"./icons/icon-male-and-female.js"},{"name":"icon-male-symbol","legacy":true,"path":"./icons/icon-male-symbol.js"},{"name":"icon-molecular-network","legacy":true,"path":"./icons/icon-molecular-network.js"},{"name":"icon-molecular","legacy":true,"path":"./icons/icon-molecular.js"},{"name":"icon-multiple-windows","legacy":true,"path":"./icons/icon-multiple-windows.js"},{"name":"icon-navigation-top","legacy":true,"path":"./icons/icon-navigation-top.js"},{"name":"icon-os-x","legacy":true,"path":"./icons/icon-os-x.js"},{"name":"icon-pants","legacy":true,"path":"./icons/icon-pants.js"},{"name":"icon-parachute-drop","legacy":true,"path":"./icons/icon-parachute-drop.js"},{"name":"icon-parental-control","legacy":true,"path":"./icons/icon-parental-control.js"},{"name":"icon-path","legacy":true,"path":"./icons/icon-path.js"},{"name":"icon-piracy","legacy":true,"path":"./icons/icon-piracy.js"},{"name":"icon-poker-chip","legacy":true,"path":"./icons/icon-poker-chip.js"},{"name":"icon-pound-bag","legacy":true,"path":"./icons/icon-pound-bag.js"},{"name":"icon-price-yen","legacy":true,"path":"./icons/icon-price-yen.js"},{"name":"icon-receipt-dollar","legacy":true,"path":"./icons/icon-receipt-dollar.js"},{"name":"icon-receipt-euro","legacy":true,"path":"./icons/icon-receipt-euro.js"},{"name":"icon-receipt-pound","legacy":true,"path":"./icons/icon-receipt-pound.js"},{"name":"icon-receipt-yen","legacy":true,"path":"./icons/icon-receipt-yen.js"},{"name":"icon-resize","legacy":true,"path":"./icons/icon-resize.js"},{"name":"icon-road","legacy":true,"path":"./icons/icon-road.js"},{"name":"icon-safe","legacy":true,"path":"./icons/icon-safe.js"},{"name":"icon-safedial","legacy":true,"path":"./icons/icon-safedial.js"},{"name":"icon-sandbox-toys","legacy":true,"path":"./icons/icon-sandbox-toys.js"},{"name":"icon-security-camera","legacy":true,"path":"./icons/icon-security-camera.js"},{"name":"icon-settings-alt-2","legacy":true,"path":"./icons/icon-settings-alt-2.js"},{"name":"icon-share-alt-2","legacy":true,"path":"./icons/icon-share-alt-2.js"},{"name":"icon-shorts","legacy":true,"path":"./icons/icon-shorts.js"},{"name":"icon-simcard","legacy":true,"path":"./icons/icon-simcard.js"},{"name":"icon-split-alt","legacy":true,"path":"./icons/icon-split-alt.js"},{"name":"icon-tab","legacy":true,"path":"./icons/icon-tab.js"},{"name":"icon-tactics","legacy":true,"path":"./icons/icon-tactics.js"},{"name":"icon-theif","legacy":true,"path":"./icons/icon-theif.js"},{"name":"icon-thought-bubble","legacy":true,"path":"./icons/icon-thought-bubble.js"},{"name":"icon-umb-contour","legacy":true,"path":"./icons/icon-umb-contour.js"},{"name":"icon-umb-deploy","legacy":true,"path":"./icons/icon-umb-deploy.js"},{"name":"icon-umb-members","legacy":true,"path":"./icons/icon-umb-members.js"},{"name":"icon-universal","legacy":true,"path":"./icons/icon-universal.js"},{"name":"icon-war","legacy":true,"path":"./icons/icon-war.js"},{"name":"icon-windows","legacy":true,"path":"./icons/icon-windows.js"},{"name":"icon-yen-bag","legacy":true,"path":"./icons/icon-yen-bag.js"}] \ No newline at end of file +[{"name":"icon-activity","path":"./icons/icon-activity.js"},{"name":"icon-add","path":"./icons/icon-add.js"},{"name":"icon-addressbook","path":"./icons/icon-addressbook.js"},{"name":"icon-alarm-clock","path":"./icons/icon-alarm-clock.js"},{"name":"icon-alert-alt","path":"./icons/icon-alert-alt.js"},{"name":"icon-alert","path":"./icons/icon-alert.js"},{"name":"icon-alt","path":"./icons/icon-alt.js"},{"name":"icon-anchor","path":"./icons/icon-anchor.js"},{"name":"icon-app","path":"./icons/icon-app.js"},{"name":"icon-application-window-alt","path":"./icons/icon-application-window-alt.js"},{"name":"icon-application-window","path":"./icons/icon-application-window.js"},{"name":"icon-arrivals","path":"./icons/icon-arrivals.js"},{"name":"icon-arrow-down","path":"./icons/icon-arrow-down.js"},{"name":"icon-arrow-left","path":"./icons/icon-arrow-left.js"},{"name":"icon-arrow-right","path":"./icons/icon-arrow-right.js"},{"name":"icon-arrow-up","path":"./icons/icon-arrow-up.js"},{"name":"icon-attachment","path":"./icons/icon-attachment.js"},{"name":"icon-autofill","path":"./icons/icon-autofill.js"},{"name":"icon-award","path":"./icons/icon-award.js"},{"name":"icon-axis-rotation-2","path":"./icons/icon-axis-rotation-2.js"},{"name":"icon-axis-rotation-3","path":"./icons/icon-axis-rotation-3.js"},{"name":"icon-axis-rotation","path":"./icons/icon-axis-rotation.js"},{"name":"icon-backspace","path":"./icons/icon-backspace.js"},{"name":"icon-badge-add","path":"./icons/icon-badge-add.js"},{"name":"icon-badge-remove","path":"./icons/icon-badge-remove.js"},{"name":"icon-badge-restricted","legacy":true,"path":"./icons/icon-badge-restricted.js"},{"name":"icon-bar-chart","path":"./icons/icon-bar-chart.js"},{"name":"icon-barcode","path":"./icons/icon-barcode.js"},{"name":"icon-bars","path":"./icons/icon-bars.js"},{"name":"icon-battery-full","path":"./icons/icon-battery-full.js"},{"name":"icon-battery-low","path":"./icons/icon-battery-low.js"},{"name":"icon-beer-glass","path":"./icons/icon-beer-glass.js"},{"name":"icon-bell-off","path":"./icons/icon-bell-off.js"},{"name":"icon-bell","path":"./icons/icon-bell.js"},{"name":"icon-binarycode","path":"./icons/icon-binarycode.js"},{"name":"icon-bird","path":"./icons/icon-bird.js"},{"name":"icon-birthday-cake","path":"./icons/icon-birthday-cake.js"},{"name":"icon-block","path":"./icons/icon-block.js"},{"name":"icon-bluetooth","path":"./icons/icon-bluetooth.js"},{"name":"icon-boat-shipping","path":"./icons/icon-boat-shipping.js"},{"name":"icon-bones","path":"./icons/icon-bones.js"},{"name":"icon-book-alt-2","path":"./icons/icon-book-alt-2.js"},{"name":"icon-book-alt","path":"./icons/icon-book-alt.js"},{"name":"icon-book","path":"./icons/icon-book.js"},{"name":"icon-bookmark","path":"./icons/icon-bookmark.js"},{"name":"icon-books","path":"./icons/icon-books.js"},{"name":"icon-box-alt","path":"./icons/icon-box-alt.js"},{"name":"icon-box-open","path":"./icons/icon-box-open.js"},{"name":"icon-box","path":"./icons/icon-box.js"},{"name":"icon-brackets","path":"./icons/icon-brackets.js"},{"name":"icon-brick","path":"./icons/icon-brick.js"},{"name":"icon-briefcase","path":"./icons/icon-briefcase.js"},{"name":"icon-browser-window","path":"./icons/icon-browser-window.js"},{"name":"icon-brush-alt-2","path":"./icons/icon-brush-alt-2.js"},{"name":"icon-brush-alt","path":"./icons/icon-brush-alt.js"},{"name":"icon-brush","path":"./icons/icon-brush.js"},{"name":"icon-bug","path":"./icons/icon-bug.js"},{"name":"icon-bulleted-list","path":"./icons/icon-bulleted-list.js"},{"name":"icon-burn","path":"./icons/icon-burn.js"},{"name":"icon-bus","path":"./icons/icon-bus.js"},{"name":"icon-calculator","path":"./icons/icon-calculator.js"},{"name":"icon-calendar-alt","path":"./icons/icon-calendar-alt.js"},{"name":"icon-calendar","path":"./icons/icon-calendar.js"},{"name":"icon-camcorder","legacy":true,"path":"./icons/icon-camcorder.js"},{"name":"icon-camera-roll","path":"./icons/icon-camera-roll.js"},{"name":"icon-candy","path":"./icons/icon-candy.js"},{"name":"icon-caps-lock","path":"./icons/icon-caps-lock.js"},{"name":"icon-car","path":"./icons/icon-car.js"},{"name":"icon-categories","path":"./icons/icon-categories.js"},{"name":"icon-certificate","path":"./icons/icon-certificate.js"},{"name":"icon-chart-curve","path":"./icons/icon-chart-curve.js"},{"name":"icon-chart","path":"./icons/icon-chart.js"},{"name":"icon-chat-active","legacy":true,"path":"./icons/icon-chat-active.js"},{"name":"icon-chat","path":"./icons/icon-chat.js"},{"name":"icon-check","path":"./icons/icon-check.js"},{"name":"icon-checkbox-dotted","path":"./icons/icon-checkbox-dotted.js"},{"name":"icon-checkbox-empty","legacy":true,"path":"./icons/icon-checkbox-empty.js"},{"name":"icon-checkbox","path":"./icons/icon-checkbox.js"},{"name":"icon-chip-alt","legacy":true,"path":"./icons/icon-chip-alt.js"},{"name":"icon-chip","path":"./icons/icon-chip.js"},{"name":"icon-cinema","path":"./icons/icon-cinema.js"},{"name":"icon-circle-dotted-active","path":"./icons/icon-circle-dotted-active.js"},{"name":"icon-circle-dotted","path":"./icons/icon-circle-dotted.js"},{"name":"icon-circuits","path":"./icons/icon-circuits.js"},{"name":"icon-client","legacy":true,"path":"./icons/icon-client.js"},{"name":"icon-cloud-drive","path":"./icons/icon-cloud-drive.js"},{"name":"icon-cloud-upload","path":"./icons/icon-cloud-upload.js"},{"name":"icon-cloud","path":"./icons/icon-cloud.js"},{"name":"icon-cloudy","path":"./icons/icon-cloudy.js"},{"name":"icon-clubs","path":"./icons/icon-clubs.js"},{"name":"icon-cocktail","path":"./icons/icon-cocktail.js"},{"name":"icon-code","path":"./icons/icon-code.js"},{"name":"icon-coffee","path":"./icons/icon-coffee.js"},{"name":"icon-coin-euro","path":"./icons/icon-coin-euro.js"},{"name":"icon-coin-yen","path":"./icons/icon-coin-yen.js"},{"name":"icon-coins-alt","legacy":true,"path":"./icons/icon-coins-alt.js"},{"name":"icon-coins","path":"./icons/icon-coins.js"},{"name":"icon-color-bucket","path":"./icons/icon-color-bucket.js"},{"name":"icon-colorpicker","path":"./icons/icon-colorpicker.js"},{"name":"icon-columns","path":"./icons/icon-columns.js"},{"name":"icon-combination-lock-open","path":"./icons/icon-combination-lock-open.js"},{"name":"icon-combination-lock","path":"./icons/icon-combination-lock.js"},{"name":"icon-command","path":"./icons/icon-command.js"},{"name":"icon-company","path":"./icons/icon-company.js"},{"name":"icon-compress","path":"./icons/icon-compress.js"},{"name":"icon-connection","path":"./icons/icon-connection.js"},{"name":"icon-console","path":"./icons/icon-console.js"},{"name":"icon-contrast","path":"./icons/icon-contrast.js"},{"name":"icon-conversation-alt","path":"./icons/icon-conversation-alt.js"},{"name":"icon-conversation","legacy":true,"path":"./icons/icon-conversation.js"},{"name":"icon-coverflow","path":"./icons/icon-coverflow.js"},{"name":"icon-credit-card-alt","legacy":true,"path":"./icons/icon-credit-card-alt.js"},{"name":"icon-credit-card","path":"./icons/icon-credit-card.js"},{"name":"icon-crop","path":"./icons/icon-crop.js"},{"name":"icon-crosshair","path":"./icons/icon-crosshair.js"},{"name":"icon-crown-alt","legacy":true,"path":"./icons/icon-crown-alt.js"},{"name":"icon-crown","path":"./icons/icon-crown.js"},{"name":"icon-cupcake","legacy":true,"path":"./icons/icon-cupcake.js"},{"name":"icon-curve","path":"./icons/icon-curve.js"},{"name":"icon-cut","path":"./icons/icon-cut.js"},{"name":"icon-dashboard","path":"./icons/icon-dashboard.js"},{"name":"icon-defrag","path":"./icons/icon-defrag.js"},{"name":"icon-delete-key","path":"./icons/icon-delete-key.js"},{"name":"icon-delete","path":"./icons/icon-delete.js"},{"name":"icon-departure","path":"./icons/icon-departure.js"},{"name":"icon-desktop","legacy":true,"path":"./icons/icon-desktop.js"},{"name":"icon-diagnostics","path":"./icons/icon-diagnostics.js"},{"name":"icon-diagonal-arrow-alt","path":"./icons/icon-diagonal-arrow-alt.js"},{"name":"icon-diagonal-arrow","path":"./icons/icon-diagonal-arrow.js"},{"name":"icon-diamond","path":"./icons/icon-diamond.js"},{"name":"icon-diamonds","path":"./icons/icon-diamonds.js"},{"name":"icon-dice","path":"./icons/icon-dice.js"},{"name":"icon-diploma-alt","legacy":true,"path":"./icons/icon-diploma-alt.js"},{"name":"icon-diploma","path":"./icons/icon-diploma.js"},{"name":"icon-directions-alt","path":"./icons/icon-directions-alt.js"},{"name":"icon-directions","path":"./icons/icon-directions.js"},{"name":"icon-disc","path":"./icons/icon-disc.js"},{"name":"icon-disk-image","path":"./icons/icon-disk-image.js"},{"name":"icon-display","path":"./icons/icon-display.js"},{"name":"icon-dna","path":"./icons/icon-dna.js"},{"name":"icon-dock-connector","path":"./icons/icon-dock-connector.js"},{"name":"icon-document-dashed-line","path":"./icons/icon-document-dashed-line.js"},{"name":"icon-document","path":"./icons/icon-document.js"},{"name":"icon-documents","path":"./icons/icon-documents.js"},{"name":"icon-donate","legacy":true,"path":"./icons/icon-donate.js"},{"name":"icon-door-open-alt","legacy":true,"path":"./icons/icon-door-open-alt.js"},{"name":"icon-door-open","path":"./icons/icon-door-open.js"},{"name":"icon-download-alt","path":"./icons/icon-download-alt.js"},{"name":"icon-download","path":"./icons/icon-download.js"},{"name":"icon-drop","path":"./icons/icon-drop.js"},{"name":"icon-eco","path":"./icons/icon-eco.js"},{"name":"icon-economy","legacy":true,"path":"./icons/icon-economy.js"},{"name":"icon-edit","path":"./icons/icon-edit.js"},{"name":"icon-employee","legacy":true,"path":"./icons/icon-employee.js"},{"name":"icon-energy-saving-bulb","path":"./icons/icon-energy-saving-bulb.js"},{"name":"icon-enter","path":"./icons/icon-enter.js"},{"name":"icon-equalizer","path":"./icons/icon-equalizer.js"},{"name":"icon-escape","path":"./icons/icon-escape.js"},{"name":"icon-ethernet","path":"./icons/icon-ethernet.js"},{"name":"icon-eye","path":"./icons/icon-eye.js"},{"name":"icon-facebook-like","path":"./icons/icon-facebook-like.js"},{"name":"icon-factory","path":"./icons/icon-factory.js"},{"name":"icon-favorite","path":"./icons/icon-favorite.js"},{"name":"icon-file-cabinet","path":"./icons/icon-file-cabinet.js"},{"name":"icon-files","path":"./icons/icon-files.js"},{"name":"icon-filter","path":"./icons/icon-filter.js"},{"name":"icon-fingerprint","path":"./icons/icon-fingerprint.js"},{"name":"icon-fire","path":"./icons/icon-fire.js"},{"name":"icon-firewire","legacy":true,"path":"./icons/icon-firewire.js"},{"name":"icon-flag-alt","path":"./icons/icon-flag-alt.js"},{"name":"icon-flag","path":"./icons/icon-flag.js"},{"name":"icon-flash","path":"./icons/icon-flash.js"},{"name":"icon-flashlight","path":"./icons/icon-flashlight.js"},{"name":"icon-flowerpot","path":"./icons/icon-flowerpot.js"},{"name":"icon-folder","path":"./icons/icon-folder.js"},{"name":"icon-folders","path":"./icons/icon-folders.js"},{"name":"icon-font","path":"./icons/icon-font.js"},{"name":"icon-food","path":"./icons/icon-food.js"},{"name":"icon-footprints","path":"./icons/icon-footprints.js"},{"name":"icon-forking","path":"./icons/icon-forking.js"},{"name":"icon-frame-alt","legacy":true,"path":"./icons/icon-frame-alt.js"},{"name":"icon-frame","path":"./icons/icon-frame.js"},{"name":"icon-fullscreen-alt","path":"./icons/icon-fullscreen-alt.js"},{"name":"icon-fullscreen","path":"./icons/icon-fullscreen.js"},{"name":"icon-game","path":"./icons/icon-game.js"},{"name":"icon-geometry","legacy":true,"path":"./icons/icon-geometry.js"},{"name":"icon-gift","path":"./icons/icon-gift.js"},{"name":"icon-glasses","path":"./icons/icon-glasses.js"},{"name":"icon-globe-alt","path":"./icons/icon-globe-alt.js"},{"name":"icon-globe-asia","legacy":true,"path":"./icons/icon-globe-asia.js"},{"name":"icon-globe-europe-africa","legacy":true,"path":"./icons/icon-globe-europe-africa.js"},{"name":"icon-globe-inverted-america","legacy":true,"path":"./icons/icon-globe-inverted-america.js"},{"name":"icon-globe-inverted-asia","legacy":true,"path":"./icons/icon-globe-inverted-asia.js"},{"name":"icon-globe-inverted-europe-africa","legacy":true,"path":"./icons/icon-globe-inverted-europe-africa.js"},{"name":"icon-globe","path":"./icons/icon-globe.js"},{"name":"icon-gps","path":"./icons/icon-gps.js"},{"name":"icon-graduate","path":"./icons/icon-graduate.js"},{"name":"icon-grid","path":"./icons/icon-grid.js"},{"name":"icon-hammer","path":"./icons/icon-hammer.js"},{"name":"icon-hand-active-alt","legacy":true,"path":"./icons/icon-hand-active-alt.js"},{"name":"icon-hand-active","path":"./icons/icon-hand-active.js"},{"name":"icon-hand-pointer-alt","legacy":true,"path":"./icons/icon-hand-pointer-alt.js"},{"name":"icon-hand-pointer","path":"./icons/icon-hand-pointer.js"},{"name":"icon-handshake","path":"./icons/icon-handshake.js"},{"name":"icon-handtool-alt","legacy":true,"path":"./icons/icon-handtool-alt.js"},{"name":"icon-handtool","path":"./icons/icon-handtool.js"},{"name":"icon-hard-drive-alt","legacy":true,"path":"./icons/icon-hard-drive-alt.js"},{"name":"icon-hard-drive","legacy":true,"path":"./icons/icon-hard-drive.js"},{"name":"icon-headphones","path":"./icons/icon-headphones.js"},{"name":"icon-headset","legacy":true,"path":"./icons/icon-headset.js"},{"name":"icon-hearts","path":"./icons/icon-hearts.js"},{"name":"icon-height","path":"./icons/icon-height.js"},{"name":"icon-help-alt","path":"./icons/icon-help-alt.js"},{"name":"icon-help","path":"./icons/icon-help.js"},{"name":"icon-home","path":"./icons/icon-home.js"},{"name":"icon-hourglass","path":"./icons/icon-hourglass.js"},{"name":"icon-imac","legacy":true,"path":"./icons/icon-imac.js"},{"name":"icon-inbox-full","legacy":true,"path":"./icons/icon-inbox-full.js"},{"name":"icon-inbox","path":"./icons/icon-inbox.js"},{"name":"icon-indent","path":"./icons/icon-indent.js"},{"name":"icon-infinity","path":"./icons/icon-infinity.js"},{"name":"icon-info","path":"./icons/icon-info.js"},{"name":"icon-invoice","legacy":true,"path":"./icons/icon-invoice.js"},{"name":"icon-ipad","legacy":true,"path":"./icons/icon-ipad.js"},{"name":"icon-iphone","legacy":true,"path":"./icons/icon-iphone.js"},{"name":"icon-item-arrangement","legacy":true,"path":"./icons/icon-item-arrangement.js"},{"name":"icon-junk","path":"./icons/icon-junk.js"},{"name":"icon-key","path":"./icons/icon-key.js"},{"name":"icon-keyboard","path":"./icons/icon-keyboard.js"},{"name":"icon-lab","path":"./icons/icon-lab.js"},{"name":"icon-laptop","path":"./icons/icon-laptop.js"},{"name":"icon-layers-alt","legacy":true,"path":"./icons/icon-layers-alt.js"},{"name":"icon-layers","path":"./icons/icon-layers.js"},{"name":"icon-layout","path":"./icons/icon-layout.js"},{"name":"icon-left-double-arrow","path":"./icons/icon-left-double-arrow.js"},{"name":"icon-legal","path":"./icons/icon-legal.js"},{"name":"icon-lense","legacy":true,"path":"./icons/icon-lense.js"},{"name":"icon-library","path":"./icons/icon-library.js"},{"name":"icon-light-down","path":"./icons/icon-light-down.js"},{"name":"icon-light-up","path":"./icons/icon-light-up.js"},{"name":"icon-lightning","path":"./icons/icon-lightning.js"},{"name":"icon-link","path":"./icons/icon-link.js"},{"name":"icon-list","path":"./icons/icon-list.js"},{"name":"icon-load","legacy":true,"path":"./icons/icon-load.js"},{"name":"icon-loading","legacy":true,"path":"./icons/icon-loading.js"},{"name":"icon-location-nearby","path":"./icons/icon-location-nearby.js"},{"name":"icon-lock","path":"./icons/icon-lock.js"},{"name":"icon-log-out","path":"./icons/icon-log-out.js"},{"name":"icon-logout","legacy":true,"path":"./icons/icon-logout.js"},{"name":"icon-loupe","legacy":true,"path":"./icons/icon-loupe.js"},{"name":"icon-magnet","path":"./icons/icon-magnet.js"},{"name":"icon-mailbox","path":"./icons/icon-mailbox.js"},{"name":"icon-map-alt","path":"./icons/icon-map-alt.js"},{"name":"icon-map-location","legacy":true,"path":"./icons/icon-map-location.js"},{"name":"icon-map-marker","path":"./icons/icon-map-marker.js"},{"name":"icon-map","path":"./icons/icon-map.js"},{"name":"icon-medal","path":"./icons/icon-medal.js"},{"name":"icon-medical-emergency","path":"./icons/icon-medical-emergency.js"},{"name":"icon-medicine","path":"./icons/icon-medicine.js"},{"name":"icon-meeting","legacy":true,"path":"./icons/icon-meeting.js"},{"name":"icon-megaphone","path":"./icons/icon-megaphone.js"},{"name":"icon-merge","path":"./icons/icon-merge.js"},{"name":"icon-message-open","path":"./icons/icon-message-open.js"},{"name":"icon-message-unopened","legacy":true,"path":"./icons/icon-message-unopened.js"},{"name":"icon-message","path":"./icons/icon-message.js"},{"name":"icon-microscope","path":"./icons/icon-microscope.js"},{"name":"icon-mindmap","legacy":true,"path":"./icons/icon-mindmap.js"},{"name":"icon-mobile","path":"./icons/icon-mobile.js"},{"name":"icon-mountain","path":"./icons/icon-mountain.js"},{"name":"icon-mouse-cursor","path":"./icons/icon-mouse-cursor.js"},{"name":"icon-mouse","path":"./icons/icon-mouse.js"},{"name":"icon-movie-alt","path":"./icons/icon-movie-alt.js"},{"name":"icon-movie","path":"./icons/icon-movie.js"},{"name":"icon-multiple-credit-cards","path":"./icons/icon-multiple-credit-cards.js"},{"name":"icon-music","path":"./icons/icon-music.js"},{"name":"icon-name-badge","legacy":true,"path":"./icons/icon-name-badge.js"},{"name":"icon-navigation-bottom","legacy":true,"path":"./icons/icon-navigation-bottom.js"},{"name":"icon-navigation-down","legacy":true,"path":"./icons/icon-navigation-down.js"},{"name":"icon-navigation-first","legacy":true,"path":"./icons/icon-navigation-first.js"},{"name":"icon-navigation-horizontal","legacy":true,"path":"./icons/icon-navigation-horizontal.js"},{"name":"icon-navigation-last","legacy":true,"path":"./icons/icon-navigation-last.js"},{"name":"icon-navigation-left","legacy":true,"path":"./icons/icon-navigation-left.js"},{"name":"icon-navigation-right","legacy":true,"path":"./icons/icon-navigation-right.js"},{"name":"icon-navigation-road","legacy":true,"path":"./icons/icon-navigation-road.js"},{"name":"icon-navigation-up","legacy":true,"path":"./icons/icon-navigation-up.js"},{"name":"icon-navigation-vertical","legacy":true,"path":"./icons/icon-navigation-vertical.js"},{"name":"icon-navigation","legacy":true,"path":"./icons/icon-navigation.js"},{"name":"icon-navigational-arrow","path":"./icons/icon-navigational-arrow.js"},{"name":"icon-network-alt","path":"./icons/icon-network-alt.js"},{"name":"icon-newspaper-alt","legacy":true,"path":"./icons/icon-newspaper-alt.js"},{"name":"icon-newspaper","path":"./icons/icon-newspaper.js"},{"name":"icon-next-media","legacy":true,"path":"./icons/icon-next-media.js"},{"name":"icon-next","legacy":true,"path":"./icons/icon-next.js"},{"name":"icon-nodes","legacy":true,"path":"./icons/icon-nodes.js"},{"name":"icon-notepad-alt","legacy":true,"path":"./icons/icon-notepad-alt.js"},{"name":"icon-notepad","path":"./icons/icon-notepad.js"},{"name":"icon-old-key","path":"./icons/icon-old-key.js"},{"name":"icon-old-phone","legacy":true,"path":"./icons/icon-old-phone.js"},{"name":"icon-operator","path":"./icons/icon-operator.js"},{"name":"icon-ordered-list","path":"./icons/icon-ordered-list.js"},{"name":"icon-out","path":"./icons/icon-out.js"},{"name":"icon-outbox","legacy":true,"path":"./icons/icon-outbox.js"},{"name":"icon-outdent","path":"./icons/icon-outdent.js"},{"name":"icon-page-add","path":"./icons/icon-page-add.js"},{"name":"icon-page-down","path":"./icons/icon-page-down.js"},{"name":"icon-page-remove","path":"./icons/icon-page-remove.js"},{"name":"icon-page-restricted","path":"./icons/icon-page-restricted.js"},{"name":"icon-page-up","path":"./icons/icon-page-up.js"},{"name":"icon-paint-roller","legacy":true,"path":"./icons/icon-paint-roller.js"},{"name":"icon-palette","path":"./icons/icon-palette.js"},{"name":"icon-panel-show","path":"./icons/icon-panel-show.js"},{"name":"icon-pannel-close","path":"./icons/icon-pannel-close.js"},{"name":"icon-paper-bag","legacy":true,"path":"./icons/icon-paper-bag.js"},{"name":"icon-paper-plane-alt","path":"./icons/icon-paper-plane-alt.js"},{"name":"icon-paper-plane","path":"./icons/icon-paper-plane.js"},{"name":"icon-partly-cloudy","path":"./icons/icon-partly-cloudy.js"},{"name":"icon-paste-in","legacy":true,"path":"./icons/icon-paste-in.js"},{"name":"icon-pause","path":"./icons/icon-pause.js"},{"name":"icon-pc","legacy":true,"path":"./icons/icon-pc.js"},{"name":"icon-people-alt-2","legacy":true,"path":"./icons/icon-people-alt-2.js"},{"name":"icon-people-alt","legacy":true,"path":"./icons/icon-people-alt.js"},{"name":"icon-people-female","legacy":true,"path":"./icons/icon-people-female.js"},{"name":"icon-people","path":"./icons/icon-people.js"},{"name":"icon-phone-ring","path":"./icons/icon-phone-ring.js"},{"name":"icon-phone","path":"./icons/icon-phone.js"},{"name":"icon-photo-album","path":"./icons/icon-photo-album.js"},{"name":"icon-picture","path":"./icons/icon-picture.js"},{"name":"icon-pictures-alt-2","path":"./icons/icon-pictures-alt-2.js"},{"name":"icon-pictures-alt","legacy":true,"path":"./icons/icon-pictures-alt.js"},{"name":"icon-pictures","path":"./icons/icon-pictures.js"},{"name":"icon-pie-chart","path":"./icons/icon-pie-chart.js"},{"name":"icon-piggy-bank","path":"./icons/icon-piggy-bank.js"},{"name":"icon-pin-location","path":"./icons/icon-pin-location.js"},{"name":"icon-plane","path":"./icons/icon-plane.js"},{"name":"icon-planet","legacy":true,"path":"./icons/icon-planet.js"},{"name":"icon-play","path":"./icons/icon-play.js"},{"name":"icon-playing-cards","legacy":true,"path":"./icons/icon-playing-cards.js"},{"name":"icon-playlist","path":"./icons/icon-playlist.js"},{"name":"icon-plugin","path":"./icons/icon-plugin.js"},{"name":"icon-podcast","path":"./icons/icon-podcast.js"},{"name":"icon-poll","legacy":true,"path":"./icons/icon-poll.js"},{"name":"icon-post-it","path":"./icons/icon-post-it.js"},{"name":"icon-power-outlet","legacy":true,"path":"./icons/icon-power-outlet.js"},{"name":"icon-power","path":"./icons/icon-power.js"},{"name":"icon-presentation","path":"./icons/icon-presentation.js"},{"name":"icon-previous-media","path":"./icons/icon-previous-media.js"},{"name":"icon-previous","path":"./icons/icon-previous.js"},{"name":"icon-price-dollar","legacy":true,"path":"./icons/icon-price-dollar.js"},{"name":"icon-price-euro","legacy":true,"path":"./icons/icon-price-euro.js"},{"name":"icon-price-pound","legacy":true,"path":"./icons/icon-price-pound.js"},{"name":"icon-print","path":"./icons/icon-print.js"},{"name":"icon-printer-alt","legacy":true,"path":"./icons/icon-printer-alt.js"},{"name":"icon-projector","path":"./icons/icon-projector.js"},{"name":"icon-pulse","path":"./icons/icon-pulse.js"},{"name":"icon-pushpin","path":"./icons/icon-pushpin.js"},{"name":"icon-qr-code","path":"./icons/icon-qr-code.js"},{"name":"icon-quote","path":"./icons/icon-quote.js"},{"name":"icon-radio-alt","path":"./icons/icon-radio-alt.js"},{"name":"icon-radio-receiver","path":"./icons/icon-radio-receiver.js"},{"name":"icon-radio","path":"./icons/icon-radio.js"},{"name":"icon-rain","path":"./icons/icon-rain.js"},{"name":"icon-rate","legacy":true,"path":"./icons/icon-rate.js"},{"name":"icon-re-post","path":"./icons/icon-re-post.js"},{"name":"icon-readonly","legacy":true,"path":"./icons/icon-readonly.js"},{"name":"icon-receipt-alt","path":"./icons/icon-receipt-alt.js"},{"name":"icon-reception","path":"./icons/icon-reception.js"},{"name":"icon-record","legacy":true,"path":"./icons/icon-record.js"},{"name":"icon-redo","path":"./icons/icon-redo.js"},{"name":"icon-refresh","path":"./icons/icon-refresh.js"},{"name":"icon-remote","legacy":true,"path":"./icons/icon-remote.js"},{"name":"icon-remove","path":"./icons/icon-remove.js"},{"name":"icon-repeat-one","path":"./icons/icon-repeat-one.js"},{"name":"icon-repeat","path":"./icons/icon-repeat.js"},{"name":"icon-reply-arrow","path":"./icons/icon-reply-arrow.js"},{"name":"icon-return-to-top","legacy":true,"path":"./icons/icon-return-to-top.js"},{"name":"icon-right-double-arrow","legacy":true,"path":"./icons/icon-right-double-arrow.js"},{"name":"icon-roadsign","legacy":true,"path":"./icons/icon-roadsign.js"},{"name":"icon-rocket","path":"./icons/icon-rocket.js"},{"name":"icon-rss","path":"./icons/icon-rss.js"},{"name":"icon-ruler-alt","path":"./icons/icon-ruler-alt.js"},{"name":"icon-ruler","path":"./icons/icon-ruler.js"},{"name":"icon-satellite-dish","path":"./icons/icon-satellite-dish.js"},{"name":"icon-save","path":"./icons/icon-save.js"},{"name":"icon-scan","path":"./icons/icon-scan.js"},{"name":"icon-school","path":"./icons/icon-school.js"},{"name":"icon-screensharing","path":"./icons/icon-screensharing.js"},{"name":"icon-script-alt","legacy":true,"path":"./icons/icon-script-alt.js"},{"name":"icon-script","path":"./icons/icon-script.js"},{"name":"icon-scull","path":"./icons/icon-scull.js"},{"name":"icon-search","path":"./icons/icon-search.js"},{"name":"icon-sensor","path":"./icons/icon-sensor.js"},{"name":"icon-server-alt","legacy":true,"path":"./icons/icon-server-alt.js"},{"name":"icon-server","path":"./icons/icon-server.js"},{"name":"icon-settings-alt","legacy":true,"path":"./icons/icon-settings-alt.js"},{"name":"icon-settings","path":"./icons/icon-settings.js"},{"name":"icon-share-alt","path":"./icons/icon-share-alt.js"},{"name":"icon-share","path":"./icons/icon-share.js"},{"name":"icon-sharing-iphone","path":"./icons/icon-sharing-iphone.js"},{"name":"icon-shield","path":"./icons/icon-shield.js"},{"name":"icon-shift","path":"./icons/icon-shift.js"},{"name":"icon-shipping-box","path":"./icons/icon-shipping-box.js"},{"name":"icon-shipping","path":"./icons/icon-shipping.js"},{"name":"icon-shoe","path":"./icons/icon-shoe.js"},{"name":"icon-shopping-basket-alt-2","legacy":true,"path":"./icons/icon-shopping-basket-alt-2.js"},{"name":"icon-shopping-basket-alt","path":"./icons/icon-shopping-basket-alt.js"},{"name":"icon-shopping-basket","path":"./icons/icon-shopping-basket.js"},{"name":"icon-shuffle","path":"./icons/icon-shuffle.js"},{"name":"icon-sience","path":"./icons/icon-sience.js"},{"name":"icon-single-note","path":"./icons/icon-single-note.js"},{"name":"icon-sitemap","legacy":true,"path":"./icons/icon-sitemap.js"},{"name":"icon-sleep","path":"./icons/icon-sleep.js"},{"name":"icon-slideshow","legacy":true,"path":"./icons/icon-slideshow.js"},{"name":"icon-smiley-inverted","legacy":true,"path":"./icons/icon-smiley-inverted.js"},{"name":"icon-smiley","path":"./icons/icon-smiley.js"},{"name":"icon-snow","path":"./icons/icon-snow.js"},{"name":"icon-sound-low","path":"./icons/icon-sound-low.js"},{"name":"icon-sound-medium","legacy":true,"path":"./icons/icon-sound-medium.js"},{"name":"icon-sound-off","path":"./icons/icon-sound-off.js"},{"name":"icon-sound-waves","path":"./icons/icon-sound-waves.js"},{"name":"icon-sound","path":"./icons/icon-sound.js"},{"name":"icon-spades","path":"./icons/icon-spades.js"},{"name":"icon-speaker","path":"./icons/icon-speaker.js"},{"name":"icon-speed-gauge","path":"./icons/icon-speed-gauge.js"},{"name":"icon-split","path":"./icons/icon-split.js"},{"name":"icon-sprout","path":"./icons/icon-sprout.js"},{"name":"icon-squiggly-line","legacy":true,"path":"./icons/icon-squiggly-line.js"},{"name":"icon-ssd","legacy":true,"path":"./icons/icon-ssd.js"},{"name":"icon-stacked-disks","legacy":true,"path":"./icons/icon-stacked-disks.js"},{"name":"icon-stamp","legacy":true,"path":"./icons/icon-stamp.js"},{"name":"icon-stop-alt","path":"./icons/icon-stop-alt.js"},{"name":"icon-stop-hand","legacy":true,"path":"./icons/icon-stop-hand.js"},{"name":"icon-stop","path":"./icons/icon-stop.js"},{"name":"icon-store","path":"./icons/icon-store.js"},{"name":"icon-stream","legacy":true,"path":"./icons/icon-stream.js"},{"name":"icon-sunny","path":"./icons/icon-sunny.js"},{"name":"icon-sweatshirt","legacy":true,"path":"./icons/icon-sweatshirt.js"},{"name":"icon-sync","path":"./icons/icon-sync.js"},{"name":"icon-t-shirt","path":"./icons/icon-t-shirt.js"},{"name":"icon-tab-key","path":"./icons/icon-tab-key.js"},{"name":"icon-tag","path":"./icons/icon-tag.js"},{"name":"icon-tags","path":"./icons/icon-tags.js"},{"name":"icon-takeaway-cup","legacy":true,"path":"./icons/icon-takeaway-cup.js"},{"name":"icon-target","path":"./icons/icon-target.js"},{"name":"icon-temperatrure-alt","path":"./icons/icon-temperatrure-alt.js"},{"name":"icon-temperature","path":"./icons/icon-temperature.js"},{"name":"icon-terminal","path":"./icons/icon-terminal.js"},{"name":"icon-theater","path":"./icons/icon-theater.js"},{"name":"icon-thumb-down","path":"./icons/icon-thumb-down.js"},{"name":"icon-thumb-up","path":"./icons/icon-thumb-up.js"},{"name":"icon-thumbnail-list","path":"./icons/icon-thumbnail-list.js"},{"name":"icon-thumbnails-small","path":"./icons/icon-thumbnails-small.js"},{"name":"icon-thumbnails","path":"./icons/icon-thumbnails.js"},{"name":"icon-ticket","path":"./icons/icon-ticket.js"},{"name":"icon-time","path":"./icons/icon-time.js"},{"name":"icon-timer","path":"./icons/icon-timer.js"},{"name":"icon-tools","legacy":true,"path":"./icons/icon-tools.js"},{"name":"icon-top","legacy":true,"path":"./icons/icon-top.js"},{"name":"icon-traffic-alt","legacy":true,"path":"./icons/icon-traffic-alt.js"},{"name":"icon-trafic","path":"./icons/icon-trafic.js"},{"name":"icon-train","path":"./icons/icon-train.js"},{"name":"icon-trash-alt-2","legacy":true,"path":"./icons/icon-trash-alt-2.js"},{"name":"icon-trash-alt","legacy":true,"path":"./icons/icon-trash-alt.js"},{"name":"icon-trash","path":"./icons/icon-trash.js"},{"name":"icon-tree","path":"./icons/icon-tree.js"},{"name":"icon-trophy","path":"./icons/icon-trophy.js"},{"name":"icon-truck","path":"./icons/icon-truck.js"},{"name":"icon-tv-old","path":"./icons/icon-tv-old.js"},{"name":"icon-tv","path":"./icons/icon-tv.js"},{"name":"icon-umb-content","legacy":true,"path":"./icons/icon-umb-content.js"},{"name":"icon-umb-developer","legacy":true,"path":"./icons/icon-umb-developer.js"},{"name":"icon-umb-media","legacy":true,"path":"./icons/icon-umb-media.js"},{"name":"icon-umb-settings","legacy":true,"path":"./icons/icon-umb-settings.js"},{"name":"icon-umb-users","legacy":true,"path":"./icons/icon-umb-users.js"},{"name":"icon-umbrella","path":"./icons/icon-umbrella.js"},{"name":"icon-undo","path":"./icons/icon-undo.js"},{"name":"icon-unlocked","path":"./icons/icon-unlocked.js"},{"name":"icon-untitled","legacy":true,"path":"./icons/icon-untitled.js"},{"name":"icon-usb-connector","legacy":true,"path":"./icons/icon-usb-connector.js"},{"name":"icon-usb","path":"./icons/icon-usb.js"},{"name":"icon-user-female","legacy":true,"path":"./icons/icon-user-female.js"},{"name":"icon-user-females-alt","legacy":true,"path":"./icons/icon-user-females-alt.js"},{"name":"icon-user-females","legacy":true,"path":"./icons/icon-user-females.js"},{"name":"icon-user-glasses","legacy":true,"path":"./icons/icon-user-glasses.js"},{"name":"icon-user","path":"./icons/icon-user.js"},{"name":"icon-users-alt","legacy":true,"path":"./icons/icon-users-alt.js"},{"name":"icon-users","path":"./icons/icon-users.js"},{"name":"icon-utilities","path":"./icons/icon-utilities.js"},{"name":"icon-vcard","path":"./icons/icon-vcard.js"},{"name":"icon-video","path":"./icons/icon-video.js"},{"name":"icon-voice","path":"./icons/icon-voice.js"},{"name":"icon-wall-plug","path":"./icons/icon-wall-plug.js"},{"name":"icon-wallet","path":"./icons/icon-wallet.js"},{"name":"icon-wand","path":"./icons/icon-wand.js"},{"name":"icon-webhook","path":"./icons/icon-webhook.js"},{"name":"icon-weight","path":"./icons/icon-weight.js"},{"name":"icon-width","path":"./icons/icon-width.js"},{"name":"icon-wifi","path":"./icons/icon-wifi.js"},{"name":"icon-window-popin","path":"./icons/icon-window-popin.js"},{"name":"icon-window-sizes","path":"./icons/icon-window-sizes.js"},{"name":"icon-wine-glass","path":"./icons/icon-wine-glass.js"},{"name":"icon-wrench","path":"./icons/icon-wrench.js"},{"name":"icon-wrong","path":"./icons/icon-wrong.js"},{"name":"icon-zip","path":"./icons/icon-zip.js"},{"name":"icon-zom-out","legacy":true,"path":"./icons/icon-zom-out.js"},{"name":"icon-zoom-in","path":"./icons/icon-zoom-in.js"},{"name":"icon-zoom-out","path":"./icons/icon-zoom-out.js"},{"name":"icon-star","path":"./icons/icon-star.js"},{"name":"icon-database","path":"./icons/icon-database.js"},{"name":"icon-azure","path":"./icons/icon-azure.js"},{"name":"icon-facebook","path":"./icons/icon-facebook.js"},{"name":"icon-gitbook","path":"./icons/icon-gitbook.js"},{"name":"icon-github","path":"./icons/icon-github.js"},{"name":"icon-gitlab","path":"./icons/icon-gitlab.js"},{"name":"icon-google","path":"./icons/icon-google.js"},{"name":"icon-linkedin","path":"./icons/icon-linkedin.js"},{"name":"icon-mastodon","path":"./icons/icon-mastodon.js"},{"name":"icon-microsoft","path":"./icons/icon-microsoft.js"},{"name":"icon-twitter-x","path":"./icons/icon-twitter-x.js"},{"name":"icon-umbraco","path":"./icons/icon-umbraco.js"},{"name":"icon-application-error","legacy":true,"path":"./icons/icon-application-error.js"},{"name":"icon-art-easel","legacy":true,"path":"./icons/icon-art-easel.js"},{"name":"icon-article","legacy":true,"path":"./icons/icon-article.js"},{"name":"icon-auction-hammer","legacy":true,"path":"./icons/icon-auction-hammer.js"},{"name":"icon-baby-stroller","legacy":true,"path":"./icons/icon-baby-stroller.js"},{"name":"icon-badge-count","legacy":true,"path":"./icons/icon-badge-count.js"},{"name":"icon-ball","legacy":true,"path":"./icons/icon-ball.js"},{"name":"icon-band-aid","legacy":true,"path":"./icons/icon-band-aid.js"},{"name":"icon-bill-dollar","legacy":true,"path":"./icons/icon-bill-dollar.js"},{"name":"icon-bill-euro","legacy":true,"path":"./icons/icon-bill-euro.js"},{"name":"icon-bill-pound","legacy":true,"path":"./icons/icon-bill-pound.js"},{"name":"icon-bill-yen","legacy":true,"path":"./icons/icon-bill-yen.js"},{"name":"icon-bill","legacy":true,"path":"./icons/icon-bill.js"},{"name":"icon-billboard","legacy":true,"path":"./icons/icon-billboard.js"},{"name":"icon-bills-dollar","legacy":true,"path":"./icons/icon-bills-dollar.js"},{"name":"icon-bills-euro","legacy":true,"path":"./icons/icon-bills-euro.js"},{"name":"icon-bills-pound","legacy":true,"path":"./icons/icon-bills-pound.js"},{"name":"icon-bills-yen","legacy":true,"path":"./icons/icon-bills-yen.js"},{"name":"icon-bills","legacy":true,"path":"./icons/icon-bills.js"},{"name":"icon-binoculars","legacy":true,"path":"./icons/icon-binoculars.js"},{"name":"icon-blueprint","legacy":true,"path":"./icons/icon-blueprint.js"},{"name":"icon-bomb","legacy":true,"path":"./icons/icon-bomb.js"},{"name":"icon-cash-register","legacy":true,"path":"./icons/icon-cash-register.js"},{"name":"icon-checkbox-dotted-active","legacy":true,"path":"./icons/icon-checkbox-dotted-active.js"},{"name":"icon-chess","legacy":true,"path":"./icons/icon-chess.js"},{"name":"icon-circus","legacy":true,"path":"./icons/icon-circus.js"},{"name":"icon-clothes-hanger","legacy":true,"path":"./icons/icon-clothes-hanger.js"},{"name":"icon-coin-dollar","legacy":true,"path":"./icons/icon-coin-dollar.js"},{"name":"icon-coin-pound","legacy":true,"path":"./icons/icon-coin-pound.js"},{"name":"icon-coin","legacy":true,"path":"./icons/icon-coin.js"},{"name":"icon-coins-dollar-alt","legacy":true,"path":"./icons/icon-coins-dollar-alt.js"},{"name":"icon-coins-dollar","legacy":true,"path":"./icons/icon-coins-dollar.js"},{"name":"icon-coins-euro-alt","legacy":true,"path":"./icons/icon-coins-euro-alt.js"},{"name":"icon-coins-euro","legacy":true,"path":"./icons/icon-coins-euro.js"},{"name":"icon-coins-pound-alt","legacy":true,"path":"./icons/icon-coins-pound-alt.js"},{"name":"icon-coins-pound","legacy":true,"path":"./icons/icon-coins-pound.js"},{"name":"icon-coins-yen-alt","legacy":true,"path":"./icons/icon-coins-yen-alt.js"},{"name":"icon-coins-yen","legacy":true,"path":"./icons/icon-coins-yen.js"},{"name":"icon-comb","legacy":true,"path":"./icons/icon-comb.js"},{"name":"icon-desk","legacy":true,"path":"./icons/icon-desk.js"},{"name":"icon-dollar-bag","legacy":true,"path":"./icons/icon-dollar-bag.js"},{"name":"icon-eject","legacy":true,"path":"./icons/icon-eject.js"},{"name":"icon-euro-bag","legacy":true,"path":"./icons/icon-euro-bag.js"},{"name":"icon-exit-fullscreen","legacy":true,"path":"./icons/icon-exit-fullscreen.js"},{"name":"icon-female-symbol","legacy":true,"path":"./icons/icon-female-symbol.js"},{"name":"icon-filter-arrows","legacy":true,"path":"./icons/icon-filter-arrows.js"},{"name":"icon-firewall","legacy":true,"path":"./icons/icon-firewall.js"},{"name":"icon-folder-open","legacy":true,"path":"./icons/icon-folder-open.js"},{"name":"icon-folder-outline","legacy":true,"path":"./icons/icon-folder-outline.js"},{"name":"icon-handprint","legacy":true,"path":"./icons/icon-handprint.js"},{"name":"icon-hat","legacy":true,"path":"./icons/icon-hat.js"},{"name":"icon-hd","legacy":true,"path":"./icons/icon-hd.js"},{"name":"icon-inactive-line","legacy":true,"path":"./icons/icon-inactive-line.js"},{"name":"icon-keychain","legacy":true,"path":"./icons/icon-keychain.js"},{"name":"icon-keyhole","legacy":true,"path":"./icons/icon-keyhole.js"},{"name":"icon-lightbulb-active","legacy":true,"path":"./icons/icon-lightbulb-active.js"},{"name":"icon-lightbulb","legacy":true,"path":"./icons/icon-lightbulb.js"},{"name":"icon-linux-tux","legacy":true,"path":"./icons/icon-linux-tux.js"},{"name":"icon-locate","legacy":true,"path":"./icons/icon-locate.js"},{"name":"icon-location-near-me","legacy":true,"path":"./icons/icon-location-near-me.js"},{"name":"icon-male-and-female","legacy":true,"path":"./icons/icon-male-and-female.js"},{"name":"icon-male-symbol","legacy":true,"path":"./icons/icon-male-symbol.js"},{"name":"icon-molecular-network","legacy":true,"path":"./icons/icon-molecular-network.js"},{"name":"icon-molecular","legacy":true,"path":"./icons/icon-molecular.js"},{"name":"icon-multiple-windows","legacy":true,"path":"./icons/icon-multiple-windows.js"},{"name":"icon-navigation-top","legacy":true,"path":"./icons/icon-navigation-top.js"},{"name":"icon-os-x","legacy":true,"path":"./icons/icon-os-x.js"},{"name":"icon-pants","legacy":true,"path":"./icons/icon-pants.js"},{"name":"icon-parachute-drop","legacy":true,"path":"./icons/icon-parachute-drop.js"},{"name":"icon-parental-control","legacy":true,"path":"./icons/icon-parental-control.js"},{"name":"icon-path","legacy":true,"path":"./icons/icon-path.js"},{"name":"icon-piracy","legacy":true,"path":"./icons/icon-piracy.js"},{"name":"icon-poker-chip","legacy":true,"path":"./icons/icon-poker-chip.js"},{"name":"icon-pound-bag","legacy":true,"path":"./icons/icon-pound-bag.js"},{"name":"icon-price-yen","legacy":true,"path":"./icons/icon-price-yen.js"},{"name":"icon-receipt-dollar","legacy":true,"path":"./icons/icon-receipt-dollar.js"},{"name":"icon-receipt-euro","legacy":true,"path":"./icons/icon-receipt-euro.js"},{"name":"icon-receipt-pound","legacy":true,"path":"./icons/icon-receipt-pound.js"},{"name":"icon-receipt-yen","legacy":true,"path":"./icons/icon-receipt-yen.js"},{"name":"icon-resize","legacy":true,"path":"./icons/icon-resize.js"},{"name":"icon-road","legacy":true,"path":"./icons/icon-road.js"},{"name":"icon-safe","legacy":true,"path":"./icons/icon-safe.js"},{"name":"icon-safedial","legacy":true,"path":"./icons/icon-safedial.js"},{"name":"icon-sandbox-toys","legacy":true,"path":"./icons/icon-sandbox-toys.js"},{"name":"icon-security-camera","legacy":true,"path":"./icons/icon-security-camera.js"},{"name":"icon-settings-alt-2","legacy":true,"path":"./icons/icon-settings-alt-2.js"},{"name":"icon-share-alt-2","legacy":true,"path":"./icons/icon-share-alt-2.js"},{"name":"icon-shorts","legacy":true,"path":"./icons/icon-shorts.js"},{"name":"icon-simcard","legacy":true,"path":"./icons/icon-simcard.js"},{"name":"icon-split-alt","legacy":true,"path":"./icons/icon-split-alt.js"},{"name":"icon-tab","legacy":true,"path":"./icons/icon-tab.js"},{"name":"icon-tactics","legacy":true,"path":"./icons/icon-tactics.js"},{"name":"icon-theif","legacy":true,"path":"./icons/icon-theif.js"},{"name":"icon-thought-bubble","legacy":true,"path":"./icons/icon-thought-bubble.js"},{"name":"icon-twitter","legacy":true,"path":"./icons/icon-twitter.js"},{"name":"icon-umb-contour","legacy":true,"path":"./icons/icon-umb-contour.js"},{"name":"icon-umb-deploy","legacy":true,"path":"./icons/icon-umb-deploy.js"},{"name":"icon-umb-members","legacy":true,"path":"./icons/icon-umb-members.js"},{"name":"icon-universal","legacy":true,"path":"./icons/icon-universal.js"},{"name":"icon-war","legacy":true,"path":"./icons/icon-war.js"},{"name":"icon-windows","legacy":true,"path":"./icons/icon-windows.js"},{"name":"icon-yen-bag","legacy":true,"path":"./icons/icon-yen-bag.js"}] \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/svgs/icon-twitter.svg b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/svgs/icon-twitter.svg new file mode 100644 index 0000000000..d332ef9a31 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/svgs/icon-twitter.svg @@ -0,0 +1,5 @@ + + Twitter + + diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/svgs/icon-umbraco.svg b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/svgs/icon-umbraco.svg index 0e121eebf3..1e69d80a4b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/svgs/icon-umbraco.svg +++ b/src/Umbraco.Web.UI.Client/src/packages/core/icon-registry/svgs/icon-umbraco.svg @@ -1,3 +1,4 @@ - - - \ No newline at end of file + + + diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/manifests.ts index daba6cd6d3..997c572bfd 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/manifests.ts @@ -1,3 +1,4 @@ +import { manifests as authManifests } from './auth/manifests.js'; import { manifests as collectionManifests } from './collection/manifests.js'; import { manifests as contentTypeManifests } from './content-type/manifests.js'; import { manifests as cultureManifests } from './culture/manifests.js'; @@ -19,6 +20,7 @@ import { manifests as workspaceManifests } from './workspace/manifests.js'; import type { ManifestTypes, UmbBackofficeManifestKind } from './extension-registry/index.js'; export const manifests: Array = [ + ...authManifests, ...extensionManifests, ...cultureManifests, ...localizationManifests, diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/menu/components/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/menu/components/index.ts new file mode 100644 index 0000000000..339f7d3c5f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/menu/components/index.ts @@ -0,0 +1,2 @@ +export * from './menu-item/index.js'; +export * from './menu-item-layout/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/menu/menu-item-layout/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/menu/components/menu-item-layout/index.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/core/menu/menu-item-layout/index.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/menu/components/menu-item-layout/index.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/menu/menu-item-layout/menu-item-layout.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/menu/components/menu-item-layout/menu-item-layout.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/core/menu/menu-item-layout/menu-item-layout.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/menu/components/menu-item-layout/menu-item-layout.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/menu/menu-item/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/menu/components/menu-item/index.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/core/menu/menu-item/index.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/menu/components/menu-item/index.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/menu/menu-item/menu-item-default.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/menu/components/menu-item/menu-item-default.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/core/menu/menu-item/menu-item-default.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/menu/components/menu-item/menu-item-default.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/menu/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/menu/index.ts index e128f53e2f..714002d519 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/menu/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/menu/index.ts @@ -1,5 +1,4 @@ -export * from './menu-item/index.js'; -export * from './menu-item-layout/index.js'; +export * from './components/index.js'; export * from './menu.element.js'; export * from './menu.context.js'; export * from './menu-tree-structure-workspace-context-base.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/menu/menu.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/menu/menu.element.ts index 4baea4fcdb..75e39a0d1e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/menu/menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/menu/menu.element.ts @@ -2,7 +2,7 @@ import { html, customElement, property } from '@umbraco-cms/backoffice/external/ import type { ManifestMenu, ManifestMenuItem } from '@umbraco-cms/backoffice/extension-registry'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import './menu-item/menu-item-default.element.js'; +import './components/menu-item/menu-item-default.element.js'; @customElement('umb-menu') export class UmbMenuElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/modal/context/modal-manager.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/modal/context/modal-manager.context.ts index d923e06b0b..eb74e7deca 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/modal/context/modal-manager.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/modal/context/modal-manager.context.ts @@ -12,6 +12,11 @@ export interface UmbModalConfig { key?: string; type?: UmbModalType; size?: UUIModalSidebarSize; + + /** + * Set the background property of the modal backdrop + */ + backdropBackground?: string; } export class UmbModalManagerContext extends UmbContextBase { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/modal/context/modal.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/modal/context/modal.context.ts index a22c2dd674..05d6220b7a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/modal/context/modal.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/modal/context/modal.context.ts @@ -32,6 +32,7 @@ export class UmbModalContext; @@ -51,10 +52,12 @@ export class UmbModalContext; +export type UmbMediaTreePickerModalData = UmbTreePickerModalData; export type UmbMediaTreePickerModalValue = UmbPickerModalValue; export const UMB_MEDIA_TREE_PICKER_MODAL = new UmbModalToken( diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts index fe5de77170..a4602e52ef 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/multi-url-picker/property-editor-ui-multi-url-picker.element.ts @@ -1,10 +1,10 @@ -import { UMB_PROPERTY_CONTEXT } from '@umbraco-cms/backoffice/property'; +import { UmbLitElement } from '../../../lit-element/index.js'; +import { UMB_PROPERTY_CONTEXT } from '../../../property/property/index.js'; import { html, customElement, property, state } from '@umbraco-cms/backoffice/external/lit'; import type { UUIModalSidebarSize } from '@umbraco-cms/backoffice/external/uui'; import type { UmbInputMultiUrlElement } from '@umbraco-cms/backoffice/components'; import type { UmbLinkPickerLink } from '@umbraco-cms/backoffice/modal'; import type { UmbPropertyEditorUiElement } from '@umbraco-cms/backoffice/extension-registry'; -import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import type { UmbPropertyEditorConfigCollection } from '@umbraco-cms/backoffice/property-editor'; /** diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property/property/property.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property/property/property.element.ts index b52179f9f7..1bf8e3c8d2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property/property/property.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property/property/property.element.ts @@ -1,9 +1,8 @@ +import { umbExtensionsRegistry, type ManifestPropertyEditorUi } from '../../extension-registry/index.js'; import { UmbPropertyContext } from './property.context.js'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { css, html, customElement, property, state, ifDefined } from '@umbraco-cms/backoffice/external/lit'; import { createExtensionElement } from '@umbraco-cms/backoffice/extension-api'; -import type { ManifestPropertyEditorUi } from '@umbraco-cms/backoffice/extension-registry'; -import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; import type { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import type { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/resources/resource.controller.ts b/src/Umbraco.Web.UI.Client/src/packages/core/resources/resource.controller.ts index b7dc4e9992..edbefc578b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/resources/resource.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/resources/resource.controller.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ +import { UMB_AUTH_CONTEXT } from '../auth/index.js'; import { isApiError, isCancelError, isCancelablePromise } from './apiTypeValidators.function.js'; import { UMB_NOTIFICATION_CONTEXT, type UmbNotificationOptions } from '@umbraco-cms/backoffice/notification'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; @@ -11,6 +12,8 @@ export class UmbResourceController extends UmbControllerBase { #notificationContext?: typeof UMB_NOTIFICATION_CONTEXT.TYPE; + #authContext?: typeof UMB_AUTH_CONTEXT.TYPE; + constructor(host: UmbControllerHost, promise: Promise, alias?: string) { super(host, alias); @@ -19,6 +22,10 @@ export class UmbResourceController extends UmbControllerBase { new UmbContextConsumerController(host, UMB_NOTIFICATION_CONTEXT, (_instance) => { this.#notificationContext = _instance; }); + + new UmbContextConsumerController(host, UMB_AUTH_CONTEXT, (_instance) => { + this.#authContext = _instance; + }); } hostConnected(): void { @@ -78,21 +85,21 @@ export class UmbResourceController extends UmbControllerBase { // Go through the error status codes and act accordingly switch (error.status ?? 0) { - case 401: - // Unauthorized - console.log('Unauthorized'); - - // TODO: Do not remove the token here but instead let whatever is listening to the event decide what to do - localStorage.removeItem('umb:userAuthTokenResponse'); - - // TODO: Show a modal dialog to login either by bubbling an event to UmbAppElement or by showing a modal directly - this.#notificationContext?.peek('warning', { - data: { - headline: 'Session Expired', - message: 'Your session has expired. Please refresh the page.', - }, - }); + case 401: { + // See if we can get the UmbAuthContext and let it know the user is timed out + if (this.#authContext) { + this.#authContext.timeOut(); + } else { + // If we can't get the auth context, show a notification + this.#notificationContext?.peek('warning', { + data: { + headline: 'Session Expired', + message: 'Your session has expired. Please refresh the page.', + }, + }); + } break; + } case 500: // Server Error diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/section/section-sidebar-context-menu/section-sidebar-context-menu.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/section/section-sidebar-context-menu/section-sidebar-context-menu.element.ts index 02b1b834e0..574a0e7085 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/section/section-sidebar-context-menu/section-sidebar-context-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/section/section-sidebar-context-menu/section-sidebar-context-menu.element.ts @@ -3,6 +3,7 @@ import { UMB_SECTION_SIDEBAR_CONTEXT } from '../section-sidebar/index.js'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { css, html, nothing, customElement, state } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; +import { observeMultiple } from '@umbraco-cms/backoffice/observable-api'; @customElement('umb-section-sidebar-context-menu') export class UmbSectionSidebarContextMenuElement extends UmbLitElement { @@ -25,26 +26,37 @@ export class UmbSectionSidebarContextMenuElement extends UmbLitElement { this.consumeContext(UMB_SECTION_SIDEBAR_CONTEXT, (instance) => { this.#sectionSidebarContext = instance; + this.#observeEntityModel(); if (this.#sectionSidebarContext) { // make prettier not break the lines on the next 4 lines: // prettier-ignore this.observe( this.#sectionSidebarContext.contextMenuIsOpen, (value) => (this._isOpen = value), '_observeContextMenuIsOpen'); // prettier-ignore - this.observe(this.#sectionSidebarContext.unique, (value) => (this._unique = value), '_observeUnique'); - // prettier-ignore - this.observe(this.#sectionSidebarContext.entityType, (value) => (this._entityType = value), '_observeEntityType'); - // prettier-ignore this.observe(this.#sectionSidebarContext.headline, (value) => (this._headline = value), '_observeHeadline'); } else { this.removeUmbControllerByAlias('_observeContextMenuIsOpen'); - this.removeUmbControllerByAlias('_observeUnique'); - this.removeUmbControllerByAlias('_observeEntityType'); this.removeUmbControllerByAlias('_observeHeadline'); } }); } + #observeEntityModel() { + if (!this.#sectionSidebarContext) { + this.removeUmbControllerByAlias('_observeEntityModel'); + return; + } + + this.observe( + observeMultiple([this.#sectionSidebarContext.unique, this.#sectionSidebarContext.entityType]), + (values) => { + this._unique = values[0]; + this._entityType = values[1]; + }, + ), + '_observeEntityModel'; + } + #closeContextMenu() { this.#sectionSidebarContext?.closeContextMenu(); } @@ -70,7 +82,6 @@ export class UmbSectionSidebarContextMenuElement extends UmbLitElement { return this._isOpen ? html`
` : nothing; } - // TODO: allow different views depending on left or right click #renderModal() { return this._isOpen && this._unique !== undefined && this._entityType ? html`
diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/data/tree-server-data-source-base.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/data/tree-server-data-source-base.ts index 844c91d1cf..1c2e14d22e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/data/tree-server-data-source-base.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/data/tree-server-data-source-base.ts @@ -7,11 +7,10 @@ import type { } from './types.js'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; -import type { TreeItemPresentationModel } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbPagedModel } from '@umbraco-cms/backoffice/repository'; export interface UmbTreeServerDataSourceBaseArgs< - ServerTreeItemType extends TreeItemPresentationModel, + ServerTreeItemType extends { hasChildren: boolean }, ClientTreeItemType extends UmbTreeItemModelBase, > { getRootItems: (args: UmbTreeRootItemsRequestArgs) => Promise>; @@ -27,7 +26,7 @@ export interface UmbTreeServerDataSourceBaseArgs< * @implements {UmbTreeDataSource} */ export abstract class UmbTreeServerDataSourceBase< - ServerTreeItemType extends TreeItemPresentationModel, + ServerTreeItemType extends { hasChildren: boolean }, ClientTreeItemType extends UmbTreeItemModelBase, > implements UmbTreeDataSource { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/umbraco-package.ts b/src/Umbraco.Web.UI.Client/src/packages/core/umbraco-package.ts deleted file mode 100644 index 9ad7203422..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/core/umbraco-package.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { ManifestEntryPoint } from '@umbraco-cms/backoffice/extension-api'; - -export const name = 'Umbraco.Core'; -export const version = '0.0.1'; -export const extensions: Array = [ - { - name: 'Core Entry Point', - alias: 'Umb.EntryPoint.Core', - type: 'entryPoint', - js: () => import('./index.js'), - }, -]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/variant/types.ts b/src/Umbraco.Web.UI.Client/src/packages/core/variant/types.ts index f0703003f6..8de38ee4b2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/variant/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/variant/types.ts @@ -1,6 +1,12 @@ import type { UmbVariantId } from './variant-id.class.js'; import type { UmbLanguageDetailModel } from '@umbraco-cms/backoffice/language'; import type { ScheduleRequestModel } from '@umbraco-cms/backoffice/external/backend-api'; +import type { UmbPropertyValueData } from '@umbraco-cms/backoffice/property'; + +export interface UmbVariantPropertyValueModel extends UmbPropertyValueData { + culture: string | null; + segment: string | null; +} export interface UmbVariantModel { createDate: string | null; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/property-structure-workspace-context.interface.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/property-structure-workspace-context.interface.ts index da9d3467e2..682abaa2e6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/property-structure-workspace-context.interface.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/contexts/tokens/property-structure-workspace-context.interface.ts @@ -1,7 +1,7 @@ import type { UmbEntityWorkspaceContext } from './entity-workspace-context.interface.js'; import type { Observable } from '@umbraco-cms/backoffice/external/rxjs'; -import type { ValueModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import type { UmbVariantPropertyValueModel } from '@umbraco-cms/backoffice/variant'; export interface UmbPropertyStructureWorkspaceContext extends UmbEntityWorkspaceContext { - propertyStructureById(id: string): Promise>; + propertyStructureById(id: string): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/data-type/repository/detail/data-type-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/data-type/repository/detail/data-type-detail.server.data-source.ts index 343901d3a5..67d697e9eb 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/data-type/repository/detail/data-type-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/data-type/repository/detail/data-type-detail.server.data-source.ts @@ -2,7 +2,10 @@ import type { UmbDataTypeDetailModel, UmbDataTypePropertyModel } from '../../typ import { UMB_DATA_TYPE_ENTITY_TYPE } from '../../entity.js'; import { UmbId } from '@umbraco-cms/backoffice/id'; import type { UmbDetailDataSource } from '@umbraco-cms/backoffice/repository'; -import type { CreateDataTypeRequestModel, DataTypeModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import type { + CreateDataTypeRequestModel, + UpdateDataTypeRequestModel, +} from '@umbraco-cms/backoffice/external/backend-api'; import { DataTypeResource } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -119,7 +122,7 @@ export class UmbDataTypeServerDataSource implements UmbDetailDataSource; defaultTemplate: { id: string } | null; - cleanup: ContentTypeCleanupBaseModel; + cleanup: UmbDocumentTypeCleanupModel; } +export type UmbDocumentTypeCleanupModel = { + preventCleanup: boolean; + keepAllVersionsNewerThanDays?: number | null; + keepLatestVersionPerDayForDays?: number | null; +}; + export interface UmbDocumentTypeCompositionRequestModel { unique: string; //Do we really need to send this to the server - Why isn't unique enough? diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/repository/culture-and-hostnames.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/repository/culture-and-hostnames.repository.ts index 5394709ce3..cdee66cafa 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/repository/culture-and-hostnames.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/repository/culture-and-hostnames.repository.ts @@ -3,7 +3,7 @@ import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api'; import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification'; import type { UmbApi } from '@umbraco-cms/backoffice/extension-api'; -import type { DomainsPresentationModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import type { UpdateDomainsRequestModel } from '@umbraco-cms/backoffice/external/backend-api'; export class UmbDocumentCultureAndHostnamesRepository extends UmbControllerBase implements UmbApi { #dataSource = new UmbDocumentCultureAndHostnamesServerDataSource(this); @@ -28,7 +28,7 @@ export class UmbDocumentCultureAndHostnamesRepository extends UmbControllerBase return { error }; } - async updateCultureAndHostnames(unique: string, data: DomainsPresentationModelBaseModel) { + async updateCultureAndHostnames(unique: string, data: UpdateDomainsRequestModel) { if (!unique) throw new Error('Unique is missing'); if (!data) throw new Error('Data is missing'); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/repository/culture-and-hostnames.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/repository/culture-and-hostnames.server.data.ts index fe4123f967..213f6406c0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/repository/culture-and-hostnames.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/entity-actions/culture-and-hostnames/repository/culture-and-hostnames.server.data.ts @@ -1,5 +1,5 @@ import { DocumentResource } from '@umbraco-cms/backoffice/external/backend-api'; -import type { DomainsPresentationModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import type { UpdateDomainsRequestModel } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -34,10 +34,10 @@ export class UmbDocumentCultureAndHostnamesServerDataSource { /** * Updates Culture and Hostnames for the given Document unique * @param {string} unique - * @param {DomainsPresentationModelBaseModel} data + * @param {UpdateDomainsRequestModel} data * @memberof UmbDocumentCultureAndHostnamesServerDataSource */ - async update(unique: string, data: DomainsPresentationModelBaseModel) { + async update(unique: string, data: UpdateDomainsRequestModel) { if (!unique) throw new Error('Unique is missing'); return tryExecuteAndNotify(this.#host, DocumentResource.putDocumentByIdDomains({ id: unique, requestBody: data })); } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts index 927acdbecb..c017ba460c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts @@ -1,3 +1,4 @@ +import { UmbEntityContext } from '@umbraco-cms/backoffice/entity'; import { UmbDocumentTypeDetailRepository } from '../../document-types/repository/detail/document-type-detail.repository.js'; import { UmbDocumentPropertyDataContext } from '../property-dataset-context/document-property-dataset-context.js'; import { UMB_DOCUMENT_ENTITY_TYPE } from '../entity.js'; @@ -132,6 +133,9 @@ export class UmbDocumentWorkspaceContext }, ); + // TODO: this should be set up for all entity workspace contexts in a base class + #entityContext = new UmbEntityContext(this); + constructor(host: UmbControllerHost) { super(host, UMB_DOCUMENT_WORKSPACE_ALIAS); @@ -162,6 +166,8 @@ export class UmbDocumentWorkspaceContext component: () => import('./document-workspace-editor.element.js'), setup: (_component, info) => { const unique = info.match.params.unique; + this.#entityContext.setEntityType(UMB_DOCUMENT_ENTITY_TYPE); + this.#entityContext.setUnique(unique); this.load(unique); }, }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/edit/document-workspace-view-edit-tab.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/edit/document-workspace-view-edit-tab.element.ts index 2e8fa1cf48..4d1e83bc18 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/edit/document-workspace-view-edit-tab.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/edit/document-workspace-view-edit-tab.element.ts @@ -1,9 +1,9 @@ import { UMB_DOCUMENT_WORKSPACE_CONTEXT } from '../../document-workspace.context-token.js'; import { css, html, customElement, property, state, repeat } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; +import type { UmbPropertyTypeContainerModel } from '@umbraco-cms/backoffice/content-type'; import { UmbContentTypeContainerStructureHelper } from '@umbraco-cms/backoffice/content-type'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import type { PropertyTypeContainerModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; import './document-workspace-view-edit-properties.element.js'; @customElement('umb-document-workspace-view-edit-tab') @@ -22,7 +22,7 @@ export class UmbDocumentWorkspaceViewEditTabElement extends UmbLitElement { #groupStructureHelper = new UmbContentTypeContainerStructureHelper(this); @state() - _groups: Array = []; + _groups: Array = []; @state() _hasProperties = false; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/edit/document-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/edit/document-workspace-view-edit.element.ts index a4e4f46505..5c6a8a78fb 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/edit/document-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/edit/document-workspace-view-edit.element.ts @@ -2,11 +2,11 @@ import { UMB_DOCUMENT_WORKSPACE_CONTEXT } from '../../document-workspace.context import type { UmbDocumentWorkspaceViewEditTabElement } from './document-workspace-view-edit-tab.element.js'; import { css, html, customElement, state, repeat } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; +import type { UmbPropertyTypeContainerModel } from '@umbraco-cms/backoffice/content-type'; import { UmbContentTypeContainerStructureHelper } from '@umbraco-cms/backoffice/content-type'; import type { UmbRoute, UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/backoffice/router'; import { encodeFolderName } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import type { PropertyTypeContainerModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbWorkspaceViewElement } from '@umbraco-cms/backoffice/extension-registry'; @customElement('umb-document-workspace-view-edit') @@ -21,7 +21,7 @@ export class UmbDocumentWorkspaceViewEditElement extends UmbLitElement implement private _routes: UmbRoute[] = []; @state() - private _tabs?: Array; + private _tabs?: Array; @state() private _routerPath?: string; diff --git a/src/Umbraco.Web.UI.Client/src/packages/language/repository/detail/language-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/language/repository/detail/language-detail.server.data-source.ts index edbeab9e4c..b7c7070d0f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/language/repository/detail/language-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/language/repository/detail/language-detail.server.data-source.ts @@ -2,7 +2,10 @@ import type { UmbLanguageDetailModel } from '../../types.js'; import { UMB_LANGUAGE_ENTITY_TYPE } from '../../entity.js'; import { UmbId } from '@umbraco-cms/backoffice/id'; import type { UmbDetailDataSource } from '@umbraco-cms/backoffice/repository'; -import type { CreateLanguageRequestModel, LanguageModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import type { + CreateLanguageRequestModel, + UpdateLanguageRequestModel, +} from '@umbraco-cms/backoffice/external/backend-api'; import { LanguageResource } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -118,7 +121,7 @@ export class UmbLanguageServerDataSource implements UmbDetailDataSource context -> repository -> (store) -> data source -// All methods should be async and return a promise. Some methods might return an observable as part of the promise response. export class UmbLogViewerRepository { #host: UmbControllerHost; #searchDataSource: UmbLogSearchesServerDataSource; @@ -36,7 +32,7 @@ export class UmbLogViewerRepository { return this.#searchDataSource.getAllSavedSearches({ skip, take }); } - async saveSearch({ name, query }: SavedLogSearchPresenationBaseModel) { + async saveSearch({ name, query }: SavedLogSearchResponseModel) { await this.#init; this.#searchDataSource.postLogViewerSavedSearch({ name, query }); } diff --git a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/logviewer-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/logviewer-workspace.context.ts index 73af896920..1040248603 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/logviewer-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/logviewer-workspace.context.ts @@ -7,7 +7,7 @@ import type { PagedLogMessageResponseModel, PagedLogTemplateResponseModel, PagedSavedLogSearchResponseModel, - SavedLogSearchPresenationBaseModel, + SavedLogSearchResponseModel, } from '@umbraco-cms/backoffice/external/backend-api'; import { DirectionModel, LogLevelModel } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; @@ -213,7 +213,7 @@ export class UmbLogViewerWorkspaceContext extends UmbControllerBase implements U } } - async saveSearch({ name, query }: SavedLogSearchPresenationBaseModel) { + async saveSearch({ name, query }: SavedLogSearchResponseModel) { const previousSavedSearches = this.#savedSearches.getValue()?.items ?? []; try { this.#savedSearches.update({ items: [...previousSavedSearches, { name, query }] }); diff --git a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/search/components/log-viewer-search-input-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/search/components/log-viewer-search-input-modal.element.ts index 95d26c6bc7..fc7ab605f2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/search/components/log-viewer-search-input-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/search/components/log-viewer-search-input-modal.element.ts @@ -1,13 +1,13 @@ import { html, css, customElement, query, state } from '@umbraco-cms/backoffice/external/lit'; import type { UUIInputElement } from '@umbraco-cms/backoffice/external/uui'; import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; -import type { SavedLogSearchPresenationBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import type { SavedLogSearchResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; export interface UmbContextSaveSearchModalData { query: string; } -export interface UmbContextSaveSearchModalValue extends SavedLogSearchPresenationBaseModel {} +export interface UmbContextSaveSearchModalValue extends SavedLogSearchResponseModel {} @customElement('umb-log-viewer-save-search-modal') export default class UmbLogViewerSaveSearchModalElement extends UmbModalBaseElement< diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/index.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/index.ts index 3bf1a83c99..a475f13f31 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/index.ts @@ -10,3 +10,5 @@ export * from './utils/index.js'; export { UMB_MEDIA_TREE_ALIAS } from './tree/index.js'; export { UMB_MEDIA_COLLECTION_ALIAS } from './collection/index.js'; export { UMB_MEDIA_MENU_ALIAS } from './menu/manifests.js'; + +export type { UmbMediaTreeItemModel } from './tree/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/views/edit/media-workspace-view-edit-tab.element.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/views/edit/media-workspace-view-edit-tab.element.ts index 09d956fcaa..bb2af89442 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/views/edit/media-workspace-view-edit-tab.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/views/edit/media-workspace-view-edit-tab.element.ts @@ -1,9 +1,9 @@ import { UMB_MEDIA_WORKSPACE_CONTEXT } from '../../media-workspace.context-token.js'; import { css, html, customElement, property, state, repeat } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; +import type { UmbPropertyTypeContainerModel } from '@umbraco-cms/backoffice/content-type'; import { UmbContentTypeContainerStructureHelper } from '@umbraco-cms/backoffice/content-type'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import type { PropertyTypeContainerModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; import './media-workspace-view-edit-properties.element.js'; @customElement('umb-media-workspace-view-edit-tab') @@ -22,7 +22,7 @@ export class UmbMediaWorkspaceViewEditTabElement extends UmbLitElement { #groupStructureHelper = new UmbContentTypeContainerStructureHelper(this); @state() - _groups: Array = []; + _groups: Array = []; @state() _hasProperties = false; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/views/edit/media-workspace-view-edit.element.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/views/edit/media-workspace-view-edit.element.ts index 6551d7b099..3e8341b192 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/views/edit/media-workspace-view-edit.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/views/edit/media-workspace-view-edit.element.ts @@ -2,11 +2,11 @@ import { UMB_MEDIA_WORKSPACE_CONTEXT } from '../../media-workspace.context-token import type { UmbMediaWorkspaceViewEditTabElement } from './media-workspace-view-edit-tab.element.js'; import { css, html, customElement, state, repeat, nothing } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; +import type { UmbPropertyTypeContainerModel } from '@umbraco-cms/backoffice/content-type'; import { UmbContentTypeContainerStructureHelper } from '@umbraco-cms/backoffice/content-type'; import type { UmbRoute, UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/backoffice/router'; import { encodeFolderName } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import type { PropertyTypeContainerModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbWorkspaceViewElement } from '@umbraco-cms/backoffice/extension-registry'; @customElement('umb-media-workspace-view-edit') @@ -21,7 +21,7 @@ export class UmbMediaWorkspaceViewEditElement extends UmbLitElement implements U private _routes: UmbRoute[] = []; @state() - private _tabs?: Array; + private _tabs?: Array; @state() private _routerPath?: string; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/views/content/member-workspace-view-content-tab.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/views/content/member-workspace-view-content-tab.element.ts index 59bcdc1441..b9566fe3ce 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/views/content/member-workspace-view-content-tab.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/views/content/member-workspace-view-content-tab.element.ts @@ -1,9 +1,9 @@ import { UMB_MEMBER_WORKSPACE_CONTEXT } from '../../member-workspace.context-token.js'; import { css, html, customElement, property, state, repeat } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; +import type { UmbPropertyTypeContainerModel } from '@umbraco-cms/backoffice/content-type'; import { UmbContentTypeContainerStructureHelper } from '@umbraco-cms/backoffice/content-type'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import type { PropertyTypeContainerModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; import './member-workspace-view-content-properties.element.js'; @customElement('umb-member-workspace-view-content-tab') @@ -22,7 +22,7 @@ export class UmbMemberWorkspaceViewContentTabElement extends UmbLitElement { #groupStructureHelper = new UmbContentTypeContainerStructureHelper(this); @state() - _groups: Array = []; + _groups: Array = []; @state() _hasProperties = false; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/views/content/member-workspace-view-content.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/views/content/member-workspace-view-content.element.ts index bf23d60129..2d96b127d5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/views/content/member-workspace-view-content.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/workspace/views/content/member-workspace-view-content.element.ts @@ -2,11 +2,11 @@ import { UMB_MEMBER_WORKSPACE_CONTEXT } from '../../member-workspace.context-tok import type { UmbMemberWorkspaceViewContentTabElement } from './member-workspace-view-content-tab.element.js'; import { css, html, customElement, state, repeat, nothing } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; +import type { UmbPropertyTypeContainerModel } from '@umbraco-cms/backoffice/content-type'; import { UmbContentTypeContainerStructureHelper } from '@umbraco-cms/backoffice/content-type'; import type { UmbRoute, UmbRouterSlotChangeEvent, UmbRouterSlotInitEvent } from '@umbraco-cms/backoffice/router'; import { encodeFolderName } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import type { PropertyTypeContainerModelBaseModel } from '@umbraco-cms/backoffice/external/backend-api'; import type { UmbWorkspaceViewElement } from '@umbraco-cms/backoffice/extension-registry'; @customElement('umb-member-workspace-view-edit') @@ -21,7 +21,7 @@ export class UmbMemberWorkspaceViewEditElement extends UmbLitElement implements private _routes: UmbRoute[] = []; @state() - private _tabs?: Array; + private _tabs?: Array; @state() private _routerPath?: string; diff --git a/src/Umbraco.Web.UI.Client/src/packages/packages/package/repository/sources/package.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/packages/package/repository/sources/package.server.data.ts index 3b70e8e1b5..a3e1aa7974 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/packages/package/repository/sources/package.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/packages/package/repository/sources/package.server.data.ts @@ -1,5 +1,5 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; -import { PackageResource } from '@umbraco-cms/backoffice/external/backend-api'; +import { ManifestResource, PackageResource } from '@umbraco-cms/backoffice/external/backend-api'; import type { CreatePackageRequestModel, UpdatePackageRequestModel, @@ -34,7 +34,7 @@ export class UmbPackageServerDataSource { * @memberof UmbPackageServerDataSource */ getRootItems() { - return tryExecuteAndNotify(this.host, PackageResource.getPackageManifest()); + return tryExecuteAndNotify(this.host, ManifestResource.getManifestManifest()); } /** diff --git a/src/Umbraco.Web.UI.Client/src/packages/packages/types.ts b/src/Umbraco.Web.UI.Client/src/packages/packages/types.ts index 774cd13211..b3eb720c52 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/packages/types.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/packages/types.ts @@ -1,6 +1,6 @@ -import type { PackageManifestResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import type { ManifestResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -export type UmbPackage = PackageManifestResponseModel; +export type UmbPackage = ManifestResponseModel; export type PackageManifestResponse = UmbPackage[]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiny-mce/components/input-tiny-mce/input-tiny-mce.element.ts b/src/Umbraco.Web.UI.Client/src/packages/tiny-mce/components/input-tiny-mce/input-tiny-mce.element.ts index 7ccc036d14..4c85e03a05 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiny-mce/components/input-tiny-mce/input-tiny-mce.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiny-mce/components/input-tiny-mce/input-tiny-mce.element.ts @@ -1,3 +1,4 @@ +import { loadManifestApi } from '../../../../libs/extension-api/functions/load-manifest-api.function.js'; import { pastePreProcessHandler } from './input-tiny-mce.handlers.js'; import { defaultFallbackConfig } from './input-tiny-mce.defaults.js'; import { availableLanguages } from './input-tiny-mce.languages.js'; @@ -6,7 +7,6 @@ import type { TinyMcePluginArguments, UmbTinyMcePluginBase } from './tiny-mce-pl import { getProcessedImageUrl } from '@umbraco-cms/backoffice/utils'; import { FormControlMixin } from '@umbraco-cms/backoffice/external/uui'; import type { EditorEvent, Editor, RawEditorOptions } from '@umbraco-cms/backoffice/external/tinymce'; -import { loadManifestApi } from '@umbraco-cms/backoffice/extension-api'; import { type ManifestTinyMcePlugin, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; import { css, customElement, html, property, query, state } from '@umbraco-cms/backoffice/external/lit'; import { firstValueFrom } from '@umbraco-cms/backoffice/external/rxjs'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/modals/current-user/current-user-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/modals/current-user/current-user-modal.element.ts index 9ad8bd483b..1e89d04f19 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/modals/current-user/current-user-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/modals/current-user/current-user-modal.element.ts @@ -1,12 +1,12 @@ import { UMB_CURRENT_USER_CONTEXT } from '../../current-user.context.js'; import type { UmbCurrentUserModel } from '../../types.js'; -import { UMB_APP_CONTEXT } from '@umbraco-cms/backoffice/app'; import { UMB_AUTH_CONTEXT } from '@umbraco-cms/backoffice/auth'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import type { CSSResultGroup } from '@umbraco-cms/backoffice/external/lit'; import { css, html, customElement, property, state } from '@umbraco-cms/backoffice/external/lit'; import type { UmbModalContext } from '@umbraco-cms/backoffice/modal'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; +import type { UUIButtonState } from '@umbraco-cms/backoffice/external/uui'; @customElement('umb-current-user-modal') export class UmbCurrentUserModalElement extends UmbLitElement { @@ -16,6 +16,9 @@ export class UmbCurrentUserModalElement extends UmbLitElement { @state() private _currentUser?: UmbCurrentUserModel; + @state() + private _logOutButtonState?: UUIButtonState; + #authContext?: typeof UMB_AUTH_CONTEXT.TYPE; #currentUserContext?: typeof UMB_CURRENT_USER_CONTEXT.TYPE; @@ -50,7 +53,9 @@ export class UmbCurrentUserModalElement extends UmbLitElement { private async _logout() { if (!this.#authContext) return; - this.#authContext.signOut(); + this._logOutButtonState = 'waiting'; + await this.#authContext.signOut(); + this._logOutButtonState = 'success'; } render() { @@ -65,6 +70,7 @@ export class UmbCurrentUserModalElement extends UmbLitElement { diff --git a/src/Umbraco.Web.UI.Client/tsconfig.json b/src/Umbraco.Web.UI.Client/tsconfig.json index 1ef7e39c5b..d96ce5875b 100644 --- a/src/Umbraco.Web.UI.Client/tsconfig.json +++ b/src/Umbraco.Web.UI.Client/tsconfig.json @@ -52,6 +52,7 @@ "@umbraco-cms/backoffice/document-type": ["./src/packages/documents/document-types/index.ts"], "@umbraco-cms/backoffice/document": ["./src/packages/documents/documents/index.ts"], "@umbraco-cms/backoffice/dynamic-root": ["./src/packages/dynamic-root/index.ts"], + "@umbraco-cms/backoffice/entity": ["./src/packages/core/entity/index.ts"], "@umbraco-cms/backoffice/entity-action": ["./src/packages/core/entity-action/index.ts"], "@umbraco-cms/backoffice/entity-bulk-action": ["./src/packages/core/entity-bulk-action/index.ts"], "@umbraco-cms/backoffice/event": ["./src/packages/core/event/index.ts"], @@ -107,6 +108,7 @@ "@umbraco-cms/backoffice/webhook": ["./src/packages/webhook/index.ts"], "@umbraco-cms/backoffice/workspace": ["./src/packages/core/workspace/index.ts"], "@umbraco-cms/backoffice/external/backend-api": ["./src/external/backend-api/index.ts"], + "@umbraco-cms/backoffice/external/base64-js": ["./src/external/base64-js/index.ts"], "@umbraco-cms/backoffice/external/dompurify": ["./src/external/dompurify/index.ts"], "@umbraco-cms/backoffice/external/lit": ["./src/external/lit/index.ts"], "@umbraco-cms/backoffice/external/marked": ["./src/external/marked/index.ts"], diff --git a/src/Umbraco.Web.UI.Client/vite.config.ts b/src/Umbraco.Web.UI.Client/vite.config.ts index f058a79d6f..4ecc0d2ab2 100644 --- a/src/Umbraco.Web.UI.Client/vite.config.ts +++ b/src/Umbraco.Web.UI.Client/vite.config.ts @@ -22,7 +22,7 @@ export const plugins: PluginOption[] = [ dest: 'umbraco/backoffice/css', }, { - src: 'src/assets/*.svg', + src: 'src/assets/*', dest: 'umbraco/backoffice/assets', }, { diff --git a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs index 3da2a3dc6f..23006d64e2 100644 --- a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs +++ b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs @@ -22,7 +22,6 @@ export default { reporters: ['lcovonly', 'text-summary'], }, plugins: [ - esbuildPlugin({ ts: true, tsconfig: './tsconfig.json', target: 'auto', json: true }), importMapsPlugin({ inject: { importMap: createImportMap({ @@ -35,8 +34,9 @@ export default { }, }), commonjs({ - include: ['node_modules/**', 'src/external/**'], + include: ['node_modules/base64-js/**/*', 'node_modules/tinymce/**/*'] }), + esbuildPlugin({ ts: true, tsconfig: './tsconfig.json', target: 'auto', json: true }), ], testRunnerHtml: (testFramework, devMode) => `