123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- function setNestedKey(obj, keyPath, value) {
-
- const match = keyPath.match(/([a-z_]+)\.(.*)/i);
-
- if (match === null) {
- obj[keyPath] = value;
- } else {
-
- const innerObj = obj[match[1]];
- setNestedKey(innerObj, match[2], value);
- }
- }
- function addOrUpdateIntegration(
- defaultIntegrationInstance,
- userIntegrations,
- forcedOptions = {},
- ) {
- return (
- Array.isArray(userIntegrations)
- ? addOrUpdateIntegrationInArray(defaultIntegrationInstance, userIntegrations, forcedOptions)
- : addOrUpdateIntegrationInFunction(
- defaultIntegrationInstance,
-
- userIntegrations ,
- forcedOptions,
- )
- ) ;
- }
- function addOrUpdateIntegrationInArray(
- defaultIntegrationInstance,
- userIntegrations,
- forcedOptions,
- ) {
- const userInstance = userIntegrations.find(integration => integration.name === defaultIntegrationInstance.name);
- if (userInstance) {
- for (const [keyPath, value] of Object.entries(forcedOptions)) {
- setNestedKey(userInstance, keyPath, value);
- }
- return userIntegrations;
- }
- return [...userIntegrations, defaultIntegrationInstance];
- }
- function addOrUpdateIntegrationInFunction(
- defaultIntegrationInstance,
- userIntegrationsFunc,
- forcedOptions,
- ) {
- const wrapper = defaultIntegrations => {
- const userFinalIntegrations = userIntegrationsFunc(defaultIntegrations);
-
-
-
- if (defaultIntegrationInstance.allowExclusionByUser) {
- const userFinalInstance = userFinalIntegrations.find(
- integration => integration.name === defaultIntegrationInstance.name,
- );
- if (!userFinalInstance) {
- return userFinalIntegrations;
- }
- }
- return addOrUpdateIntegrationInArray(defaultIntegrationInstance, userFinalIntegrations, forcedOptions);
- };
- return wrapper;
- }
- export { addOrUpdateIntegration };
|