From 1fdd5d4c9d7f04cbd01ac8621ac5f26ab4532749 Mon Sep 17 00:00:00 2001 From: Aleksandr Kitov Date: Tue, 10 Oct 2023 18:32:23 +0200 Subject: [PATCH] fix(loader): consistent loader interface --- .../src/module-loader/create-module-loader.ts | 6 +++--- .../src/module-loader/hooks/use-module-mounter.ts | 6 +++--- .../arui-scripts-modules/src/module-loader/types.ts | 10 +++++++--- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/arui-scripts-modules/src/module-loader/create-module-loader.ts b/packages/arui-scripts-modules/src/module-loader/create-module-loader.ts index 21ef6b3c..6d0933d8 100644 --- a/packages/arui-scripts-modules/src/module-loader/create-module-loader.ts +++ b/packages/arui-scripts-modules/src/module-loader/create-module-loader.ts @@ -3,7 +3,7 @@ import { ConsumersCounter } from './utils/consumers-counter'; import { removeModuleResources } from './utils/dom-utils'; import { getCompatModule, getModule } from './utils/get-module'; import { mountModuleResources } from './utils/mount-module-resources'; -import { BaseModuleState, GetResourcesRequest, Loader, LoaderParams, ModuleResources } from './types'; +import { BaseModuleState, GetResourcesRequest, Loader, ModuleResources } from './types'; export type ModuleResourcesGetter = ( params: GetResourcesRequest, @@ -68,12 +68,12 @@ export function createModuleLoader< const moduleConsumersCounter = new ConsumersCounter(moduleId); - return async (params, cssTargetSelector) => { + return async ({ cssTargetSelector, getResourcesParams}) => { // Загружаем описание модуля const moduleResources = await getModuleResources({ moduleId, hostAppId, - params: (params as LoaderParams).getResourcesParams as any, // для того чтобы пользователям не пришлось передавать этот параметр если он им не нужен, мы обвешиваемся type-cast'ом + params: getResourcesParams as any, // для того чтобы пользователям не пришлось передавать этот параметр если он им не нужен, мы обвешиваемся type-cast'ом }); await onBeforeResourcesMount?.(moduleId, moduleResources); diff --git a/packages/arui-scripts-modules/src/module-loader/hooks/use-module-mounter.ts b/packages/arui-scripts-modules/src/module-loader/hooks/use-module-mounter.ts index 2c24af62..048f6601 100644 --- a/packages/arui-scripts-modules/src/module-loader/hooks/use-module-mounter.ts +++ b/packages/arui-scripts-modules/src/module-loader/hooks/use-module-mounter.ts @@ -68,10 +68,10 @@ export function useModuleMounter = { // Для того чтобы пользователям не приходилось передавать undefined если их загрузчик не принимает параметры // мы делаем такой мини-хак export type LoaderParams = { + /** + * Параметры, которые будут переданы в функцию получения ресурсов модуля + */ getResourcesParams: GetResourcesParams; + /** + * Опциональный параметр, который используется для поиска элемента, в который нужно вставить css ресурсы модуля. + */ + cssTargetSelector?: string; }; /** * Функция, которая загружает модуль и подключает его на страницу. * Может принимать дополнительные параметры, которые будут переданы в функцию получения ресурсов модуля. * Возвращает промис, содержащий сам модуль и функцию, которая удаляет ресурсы модуля со страницы. - * @param params параметры, которые будут переданы в функцию получения ресурсов модуля - * @param cssTargetSelector Опциональный параметр, который используется для поиска элемента, в который нужно вставить css ресурсы модуля. */ export type Loader = ( params: LoaderParams, - cssTargetSelector?: string, ) => Promise>; // Описание типов модулей