V4Fire / Core

V4Fire core library
https://v4fire.github.io/Core/
MIT License
25 stars 9 forks source link

extraProviders: В совпадении имени экстра провайдера и неймспейса провайдера которого этот экстра загружает возникает ошибка #381

Open bonkalol opened 12 months ago

bonkalol commented 12 months ago

Дано:

@provider('ads')
export default class Content extends Ads {
    override baseURL: string = '/content';

    extraProviders: Ads['extraProviders'] = (opts) => ({
        ads: {
            provider: 'ads.Get',
            query: Object.get(opts, 'opts.meta.providerParams.meta.adsQuery')
        }
    });
}

После того как данные загрузятся произойдет попытка установки данных:

Object.set(composition, alias, data);

Где composition будет {ads: {...}}, а alias ads.Content. Возникнет ошибка из-за невозможности расширения объекта ads и провайдер сломается.

Если переименовать extraProviders.ads в extraProviders.adv то очевидно все исправляется и работает корректно.

qvenge commented 8 months ago

Вообще хотелось бы при добавлении экстра провайдеров иметь возможность управлять выходным форматом смерженных данных, или даже задавать стратегию слияния загружаемых данных

kobezzza commented 7 months ago

Как будто composition-engine будет уметь все это