From 7ef7fb403cb7f2b6a01f1659e56532a5052a1adb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Mon, 9 Oct 2023 20:08:28 +0200 Subject: [PATCH] api type-guards --- .../extension-api/create-extension-api.function.ts | 4 ++-- .../src/libs/extension-api/type-guards/index.ts | 6 +++--- ...s => is-manifest-api-instance-type.function.ts} | 2 +- .../is-manifest-apiable-type.function.ts | 14 ++++++++++++++ .../is-manifest-classable-type.function.ts | 12 ------------ .../is-manifest-elementable-type.function.ts | 2 ++ 6 files changed, 22 insertions(+), 18 deletions(-) rename src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/{is-manifest-class-instance-type.function.ts => is-manifest-api-instance-type.function.ts} (69%) create mode 100644 src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-apiable-type.function.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-classable-type.function.ts diff --git a/src/Umbraco.Web.UI.Client/src/libs/extension-api/create-extension-api.function.ts b/src/Umbraco.Web.UI.Client/src/libs/extension-api/create-extension-api.function.ts index 83026a79be..76d4a225fa 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/extension-api/create-extension-api.function.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/extension-api/create-extension-api.function.ts @@ -1,4 +1,4 @@ -import { hasApiExport, hasDefaultExport, isManifestClassConstructorType } from './type-guards/index.js'; +import { hasApiExport, hasDefaultExport, isManifestApiConstructorType } from './type-guards/index.js'; import type { ManifestApi, ClassConstructor, ManifestElementAndApi } from './types.js'; import { loadExtensionApi } from './load-extension-api.function.js'; @@ -9,7 +9,7 @@ export async function createExtensionApi( ): Promise { const js = await loadExtensionApi(manifest); - if (isManifestClassConstructorType(manifest)) { + if (isManifestApiConstructorType(manifest)) { return new manifest.api(...constructorArguments); } diff --git a/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/index.ts b/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/index.ts index 4aaebfed51..e435f99db2 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/index.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/index.ts @@ -1,5 +1,5 @@ -export * from './is-manifest-class-instance-type.function.js'; -export * from './is-manifest-classable-type.function.js'; +export * from './is-manifest-api-instance-type.function.js'; +export * from './is-manifest-apiable-type.function.js'; export * from './is-manifest-element-name-type.function.js'; export * from './is-manifest-elementable-type.function.js'; export * from './is-manifest-js-type.function.js'; @@ -8,4 +8,4 @@ export * from './is-manifest-api-js-type.function.js'; export * from './is-manifest-loader-type.function.js'; export * from './has-default-export.function.js'; export * from './has-element-export.function.js'; -export * from './has-api-export.function.js'; \ No newline at end of file +export * from './has-api-export.function.js'; diff --git a/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-class-instance-type.function.ts b/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-api-instance-type.function.ts similarity index 69% rename from src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-class-instance-type.function.ts rename to src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-api-instance-type.function.ts index b342732889..1d4d432d37 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-class-instance-type.function.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-api-instance-type.function.ts @@ -1,6 +1,6 @@ import type { ClassConstructor, ManifestApi } from '../types.js'; -export function isManifestClassConstructorType(manifest: unknown): manifest is ManifestApiWithClassConstructor { +export function isManifestApiConstructorType(manifest: unknown): manifest is ManifestApiWithClassConstructor { return typeof manifest === 'object' && manifest !== null && (manifest as ManifestApi).api !== undefined; } diff --git a/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-apiable-type.function.ts b/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-apiable-type.function.ts new file mode 100644 index 0000000000..f42ab3e0ca --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-apiable-type.function.ts @@ -0,0 +1,14 @@ +import type { ManifestBase, ManifestApi } from '../types.js'; +import { isManifestJSType } from './is-manifest-js-type.function.js'; +import { isManifestLoaderType } from './is-manifest-loader-type.function.js'; +import { isManifestApiConstructorType } from './is-manifest-api-instance-type.function.js'; +import { isManifestApiJSType } from './is-manifest-api-js-type.function.js'; + +export function isManifestApiType(manifest: ManifestBase): manifest is ManifestApi { + return ( + isManifestApiConstructorType(manifest) || + isManifestLoaderType(manifest) || + isManifestApiJSType(manifest) || + isManifestJSType(manifest) + ); +} diff --git a/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-classable-type.function.ts b/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-classable-type.function.ts deleted file mode 100644 index f536599028..0000000000 --- a/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-classable-type.function.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { ManifestBase, ManifestApi } from '../types.js'; -import { isManifestJSType } from './is-manifest-js-type.function.js'; -import { isManifestLoaderType } from './is-manifest-loader-type.function.js'; -import { isManifestClassConstructorType } from './is-manifest-class-instance-type.function.js'; - -export function isManifestClassableType(manifest: ManifestBase): manifest is ManifestApi { - return ( - isManifestClassConstructorType(manifest) || - isManifestLoaderType(manifest) || - isManifestJSType(manifest) - ); -} diff --git a/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-elementable-type.function.ts b/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-elementable-type.function.ts index 01ab3ca8a7..d375ec9766 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-elementable-type.function.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/extension-api/type-guards/is-manifest-elementable-type.function.ts @@ -1,4 +1,5 @@ import type { ManifestElement, ManifestBase } from '../types.js'; +import { isManifestElementJSType } from './is-manifest-element-js-type.function.js'; import { isManifestElementNameType } from './is-manifest-element-name-type.function.js'; import { isManifestJSType } from './is-manifest-js-type.function.js'; import { isManifestLoaderType } from './is-manifest-loader-type.function.js'; @@ -9,6 +10,7 @@ export function isManifestElementableType(manifest) || + isManifestElementJSType(manifest) || isManifestJSType(manifest) ); }