From 9a5fe32c613e80d7ea8fe3e349250e623275af5f Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 5 Apr 2024 15:28:39 +0200 Subject: [PATCH] remove temp login screen --- .../apps/auth/e2e/login.spec.ts | 19 --- .../apps/auth/index.html | 15 -- .../apps/auth/package.json | 20 --- .../apps/auth/playwright.config.ts | 108 ------------- .../apps/auth/public/favicon.svg | 17 -- .../apps/auth/public/login.jpeg | Bin 30678 -> 0 bytes .../apps/auth/public/umbraco_logo_white.svg | 1 - .../auth/public/umbraco_logomark_white.svg | 1 - .../apps/auth/src/auth-layout.element.ts | 72 --------- .../apps/auth/src/auth-legacy.context.ts | 10 -- .../apps/auth/src/auth.context.ts | 13 -- .../apps/auth/src/auth.repository.ts | 44 ------ .../external-login-provider-test.element.ts | 40 ----- .../external-login-provider-test2.element.ts | 53 ------- .../src/external-login-providers/manifests.ts | 29 ---- .../apps/auth/src/index.ts | 7 - .../apps/auth/src/login.element.ts | 148 ------------------ .../apps/auth/src/login.test.ts | 21 --- .../apps/auth/src/types.ts | 16 -- .../apps/auth/src/vite-env.d.ts | 6 - .../apps/auth/tsconfig.json | 12 -- .../apps/auth/tsconfig.node.json | 9 -- .../apps/auth/vite.config.ts | 32 ---- src/Umbraco.Web.UI.Client/package.json | 3 +- 24 files changed, 1 insertion(+), 695 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/e2e/login.spec.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/index.html delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/package.json delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/playwright.config.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/public/favicon.svg delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/public/login.jpeg delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logo_white.svg delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logomark_white.svg delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/auth-layout.element.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/auth-legacy.context.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/auth.context.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/auth.repository.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test.element.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test2.element.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/manifests.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/index.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/login.element.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/login.test.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/types.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/vite-env.d.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/tsconfig.json delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/tsconfig.node.json delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/vite.config.ts 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 412cd17865c1b847affa4f0c2abc74645f678187..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30678 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 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/package.json b/src/Umbraco.Web.UI.Client/package.json index e8c3085c05..33e545c0fa 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -117,7 +117,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", @@ -146,7 +145,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",