From b5ca93d0a28f97e68c8f7009522e49d00f772d2c Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 25 Aug 2022 15:12:48 +0200 Subject: [PATCH] rename ManifestCore to ManifestTypes --- .../extensions/editor-extensions.element.ts | 5 +++-- .../src/core/extension/extension.registry.ts | 16 +++++++++------- .../core/extension/load-extension.function.ts | 8 ++++---- .../src/core/models/index.ts | 3 ++- .../src/temp-internal-manifests.ts | 4 ++-- 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/editors/extensions/editor-extensions.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/editors/extensions/editor-extensions.element.ts index fa8a98ffdb..1f1950d6a3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/editors/extensions/editor-extensions.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/editors/extensions/editor-extensions.element.ts @@ -7,12 +7,13 @@ import { Subscription } from 'rxjs'; import { UmbContextConsumerMixin } from '../../../core/context'; import { UmbExtensionRegistry } from '../../../core/extension'; import { isManifestElementType } from '../../../core/extension/is-extension.function'; -import type { ManifestCore } from '../../../core/models'; + +import type { ManifestTypes } from '../../../core/models'; @customElement('umb-editor-extensions') export class UmbEditorExtensionsElement extends UmbContextConsumerMixin(LitElement) { @state() - private _extensions: Array = []; + private _extensions: Array = []; private _extensionRegistry?: UmbExtensionRegistry; private _extensionsSubscription?: Subscription; diff --git a/src/Umbraco.Web.UI.Client/src/core/extension/extension.registry.ts b/src/Umbraco.Web.UI.Client/src/core/extension/extension.registry.ts index 3a04353a95..f830563458 100644 --- a/src/Umbraco.Web.UI.Client/src/core/extension/extension.registry.ts +++ b/src/Umbraco.Web.UI.Client/src/core/extension/extension.registry.ts @@ -3,19 +3,20 @@ import { BehaviorSubject, map, Observable } from 'rxjs'; import { createExtensionElement } from './create-extension-element.function'; import type { - ManifestCore, + ManifestTypes, ManifestDashboard, ManifestEditorView, ManifestEntrypoint, ManifestPropertyAction, ManifestPropertyEditorUI, ManifestSection, + ManifestCustom, } from '../models'; export class UmbExtensionRegistry { - private _extensions = new BehaviorSubject>([]); + private _extensions = new BehaviorSubject>([]); public readonly extensions = this._extensions.asObservable(); - register(manifest: ManifestCore): void { + register(manifest: ManifestTypes): void { const extensionsValues = this._extensions.getValue(); const extension = extensionsValues.find((extension) => extension.alias === manifest.alias); @@ -32,7 +33,8 @@ export class UmbExtensionRegistry { } } - getByAlias(alias: string): Observable { + getByAlias(alias: string): Observable; + getByAlias(alias: string) { // TODO: make pipes prettier/simpler/reuseable return this.extensions.pipe(map((dataTypes) => dataTypes.find((extension) => extension.alias === alias) || null)); } @@ -46,9 +48,9 @@ export class UmbExtensionRegistry { extensionsOfType(type: 'propertyEditorUI'): Observable>; extensionsOfType(type: 'propertyAction'): Observable>; extensionsOfType(type: 'entrypoint'): Observable>; - extensionsOfType(type: string): Observable>; - extensionsOfType(type: string): Observable>; - extensionsOfType(type: string) { + extensionsOfType(type: 'custom'): Observable>; + extensionsOfType(type: string): Observable>; + extensionsOfType(type: string): Observable> { return this.extensions.pipe(map((exts) => exts.filter((ext) => ext.type === type))); } } diff --git a/src/Umbraco.Web.UI.Client/src/core/extension/load-extension.function.ts b/src/Umbraco.Web.UI.Client/src/core/extension/load-extension.function.ts index 03f45d97bd..556f60b063 100644 --- a/src/Umbraco.Web.UI.Client/src/core/extension/load-extension.function.ts +++ b/src/Umbraco.Web.UI.Client/src/core/extension/load-extension.function.ts @@ -1,8 +1,8 @@ -import { ManifestCore } from '../models'; +import { ManifestTypes } from '../models'; -export type ManifestLoaderType = ManifestCore & { loader: () => Promise }; +export type ManifestLoaderType = ManifestTypes & { loader: () => Promise }; -export function loadExtension(manifest: ManifestCore) { +export function loadExtension(manifest: ManifestTypes) { // TODO: change this back to dynamic import after POC. Vite complains about the dynamic imports in the public folder but doesn't include the temp app_plugins folder in the final build. // return import(/* @vite-ignore */ manifest.js); if (isManifestLoaderType(manifest)) { @@ -32,6 +32,6 @@ export function loadExtension(manifest: ManifestCore) { }) as Promise; } -export function isManifestLoaderType(manifest: ManifestCore): manifest is ManifestLoaderType { +export function isManifestLoaderType(manifest: ManifestTypes): manifest is ManifestLoaderType { return typeof (manifest as ManifestLoaderType).loader === 'function'; } diff --git a/src/Umbraco.Web.UI.Client/src/core/models/index.ts b/src/Umbraco.Web.UI.Client/src/core/models/index.ts index b987800b31..924d783b5b 100644 --- a/src/Umbraco.Web.UI.Client/src/core/models/index.ts +++ b/src/Umbraco.Web.UI.Client/src/core/models/index.ts @@ -16,13 +16,14 @@ export type UmbracoInstallerDatabaseModel = components['schemas']['InstallDataba export type UmbracoInstallerUserModel = components['schemas']['InstallUserModel']; export type TelemetryModel = components['schemas']['TelemetryModel']; export type ServerStatus = components['schemas']['ServerStatus']; -export type ManifestCore = components['schemas']['Manifest']; +export type ManifestTypes = components['schemas']['Manifest']; export type ManifestSection = components['schemas']['IManifestSection']; export type ManifestPropertyEditorUI = components['schemas']['IManifestPropertyEditorUI']; export type ManifestDashboard = components['schemas']['IManifestDashboard']; export type ManifestEditorView = components['schemas']['IManifestEditorView']; export type ManifestPropertyAction = components['schemas']['IManifestPropertyAction']; export type ManifestEntrypoint = components['schemas']['IManifestEntrypoint']; +export type ManifestCustom = components['schemas']['IManifestCustom']; export type ManifestElementType = | ManifestSection diff --git a/src/Umbraco.Web.UI.Client/src/temp-internal-manifests.ts b/src/Umbraco.Web.UI.Client/src/temp-internal-manifests.ts index a9b95749af..48fa4ad186 100644 --- a/src/Umbraco.Web.UI.Client/src/temp-internal-manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/temp-internal-manifests.ts @@ -1,8 +1,8 @@ -import type { ManifestCore } from './core/models'; +import type { ManifestTypes } from './core/models'; // TODO: consider moving weight from meta to the main part of the manifest. We need it for every extension. // TODO: consider adding a label property as part of the meta. It might make sense to have an "extension" name label where one is needed. -export const internalManifests: Array Promise }> = [ +export const internalManifests: Array Promise }> = [ { type: 'section', alias: 'Umb.Section.Content',