@adzen/doohbot 1.0.7 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -131,6 +131,25 @@ const doohbotConst = {
131
131
  botAvatar: 'data:image/png;base64,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',
132
132
  };
133
133
 
134
+ /**
135
+ * Injection token for Doohbot configuration.
136
+ * Used to inject user-provided or default config into services.
137
+ */
138
+ const DOOHBOT_CONFIG = new InjectionToken('DOOHBOT_CONFIG');
139
+
140
+ const DOOHBOT_API_BASE_URLS = {
141
+ development: 'http://localhost:4000/api/',
142
+ test: 'https://api.test.doohbot.com/api/',
143
+ stage: 'https://api.stage.doohbot.com/api/',
144
+ production: 'https://api.doohbot.com/',
145
+ };
146
+ function getDefaultDoohbotApiBaseUrl(environment) {
147
+ return DOOHBOT_API_BASE_URLS[environment];
148
+ }
149
+ function isDefaultDoohbotApiBaseUrl(environment, baseUrl) {
150
+ return (baseUrl ?? '') === getDefaultDoohbotApiBaseUrl(environment);
151
+ }
152
+
134
153
  /**
135
154
  * Default Doohbot configuration values.
136
155
  * Applied when no user overrides are provided.
@@ -146,7 +165,7 @@ const DEFAULT_DOOHBOT_CONFIG = {
146
165
  useNonStreamingChat: false, // true for non-streaming, false for streaming
147
166
  // API integration defaults
148
167
  api: {
149
- baseUrl: 'https://api.doohbot.com/api/',
168
+ baseUrl: getDefaultDoohbotApiBaseUrl('development'),
150
169
  apiKey: undefined,
151
170
  enableRetry: true,
152
171
  retryAttempts: 2,
@@ -163,10 +182,44 @@ const DEFAULT_DOOHBOT_CONFIG = {
163
182
  };
164
183
 
165
184
  /**
166
- * Injection token for Doohbot configuration.
167
- * Used to inject user-provided or default config into services.
185
+ * Merges user-provided config overrides with defaults.
186
+ *
187
+ * @param overrides - Partial config to override defaults
188
+ * @param baseConfig - Base config to merge into. Defaults to library defaults.
189
+ * @returns Fully resolved DoohbotConfig object
168
190
  */
169
- const DOOHBOT_CONFIG = new InjectionToken('DOOHBOT_CONFIG');
191
+ function resolveDoohbotConfig(overrides = {}, baseConfig = DEFAULT_DOOHBOT_CONFIG) {
192
+ const environment = overrides.environment ?? baseConfig.environment;
193
+ const environmentDefaultBaseUrl = getDefaultDoohbotApiBaseUrl(environment);
194
+ const shouldUseEnvironmentDefaultBaseUrl = !overrides.api?.baseUrl &&
195
+ (!baseConfig.api?.baseUrl ||
196
+ isDefaultDoohbotApiBaseUrl(baseConfig.environment, baseConfig.api.baseUrl));
197
+ return {
198
+ ...baseConfig,
199
+ ...overrides,
200
+ environment,
201
+ api: {
202
+ ...baseConfig.api,
203
+ ...overrides.api,
204
+ baseUrl: shouldUseEnvironmentDefaultBaseUrl
205
+ ? environmentDefaultBaseUrl
206
+ : (overrides.api?.baseUrl ?? baseConfig.api?.baseUrl ?? environmentDefaultBaseUrl),
207
+ },
208
+ auth: baseConfig.auth?.mode || overrides.auth?.mode
209
+ ? {
210
+ mode: overrides.auth?.mode ?? baseConfig.auth?.mode,
211
+ ...baseConfig.auth,
212
+ ...overrides.auth,
213
+ }
214
+ : undefined,
215
+ theme: baseConfig.theme || overrides.theme
216
+ ? {
217
+ ...baseConfig.theme,
218
+ ...overrides.theme,
219
+ }
220
+ : undefined,
221
+ };
222
+ }
170
223
 
171
224
  /**
172
225
  * Centralized service for managing Doohbot configuration.
@@ -217,11 +270,7 @@ class DoohbotConfigService {
217
270
  * Undefined if no theme overrides are provided.
218
271
  */
219
272
  this.theme = () => this.configSignal().theme;
220
- // Merge injected config with defaults
221
- const mergedConfig = {
222
- ...DEFAULT_DOOHBOT_CONFIG,
223
- ...injectedConfig,
224
- };
273
+ const mergedConfig = resolveDoohbotConfig(injectedConfig);
225
274
  this.validateConfig(mergedConfig);
226
275
  // Initialize state
227
276
  this.configSignal = signal(mergedConfig, ...(ngDevMode ? [{ debugName: "configSignal" }] : []));
@@ -236,7 +285,7 @@ class DoohbotConfigService {
236
285
  if ('environment' in value) {
237
286
  throw new Error('environment cannot be changed at runtime');
238
287
  }
239
- const newConfig = { ...this.configSignal(), ...value };
288
+ const newConfig = resolveDoohbotConfig(value, this.configSignal());
240
289
  this.validateConfig(newConfig);
241
290
  this.configSignal.set(newConfig);
242
291
  this.configSubject.next(newConfig);
@@ -4308,7 +4357,10 @@ class DoohbotComponent {
4308
4357
  if (changes['isDarkMode']) {
4309
4358
  this.applyTheme();
4310
4359
  }
4311
- this.tryStartAuthFlow();
4360
+ //! ONLY trigger auth when relevant
4361
+ if (changes['licenseFile'] || changes['licenseCode'] || changes['rememberMe']) {
4362
+ this.tryStartAuthFlow();
4363
+ }
4312
4364
  }
4313
4365
  // Theme applied from global configuration
4314
4366
  applyTheme() {
@@ -4403,19 +4455,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
4403
4455
  }]
4404
4456
  }], ctorParameters: () => [] });
4405
4457
 
4406
- /**
4407
- * Merges user-provided config overrides with defaults.
4408
- *
4409
- * @param overrides - Partial config to override defaults
4410
- * @returns Fully resolved DoohbotConfig object
4411
- */
4412
- function resolveDoohbotConfig(overrides) {
4413
- return {
4414
- ...DEFAULT_DOOHBOT_CONFIG,
4415
- ...overrides,
4416
- };
4417
- }
4418
-
4419
4458
  class AuthInterceptor {
4420
4459
  constructor(authService, configService) {
4421
4460
  this.authService = authService;
@@ -4678,9 +4717,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
4678
4717
  * provideDoohbot({
4679
4718
  * environment: 'production',
4680
4719
  * licenseFilePath: 'assets/doohbot_license.json',
4681
- * // Optional api configuration if want to use your own api
4720
+ * // Optional api configuration if want to use your own api.
4721
+ * // If omitted, baseUrl is resolved from environment automatically.
4682
4722
  * api: {
4683
- * apiBaseUrl: 'https://api.doohbot.com/',
4684
4723
  * apiKey: 'your-api-key',
4685
4724
  * },
4686
4725
  * // Optional theme configuration if want to match doohbot to your application theme
@@ -4697,10 +4736,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
4697
4736
  * ```
4698
4737
  */
4699
4738
  function provideDoohbot(config = {}) {
4739
+ const resolvedConfig = resolveDoohbotConfig(config);
4700
4740
  return makeEnvironmentProviders([
4701
4741
  {
4702
4742
  provide: DOOHBOT_CONFIG,
4703
- useValue: resolveDoohbotConfig(config),
4743
+ useValue: resolvedConfig,
4704
4744
  },
4705
4745
  DoohbotConfigService,
4706
4746
  // Init logger
@@ -4718,9 +4758,7 @@ function provideDoohbot(config = {}) {
4718
4758
  useClass: AuthInterceptor,
4719
4759
  multi: true,
4720
4760
  },
4721
- ...((config.environment ?? DEFAULT_DOOHBOT_CONFIG.environment) === 'production'
4722
- ? []
4723
- : devProviders),
4761
+ ...(resolvedConfig.environment === 'production' ? [] : devProviders),
4724
4762
  ]);
4725
4763
  }
4726
4764
  const devProviders = [