@cranberry-money/shared-services 1.12.1 → 1.13.0

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.
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Service Discovery Pattern for API configuration
3
+ * Provides explicit, fail-fast configuration for all shared services
4
+ */
5
+ import { createWebApiClient, createMobileApiClient } from '../api/apiClient';
6
+ import type { AuthManager } from '../auth/AuthManager';
7
+ import type { SecureStoreInterface } from '../adapters/MobileTokenStorage';
8
+ export interface ServiceConfig {
9
+ apiBaseUrl: string;
10
+ environment?: 'development' | 'staging' | 'production';
11
+ timeout?: number;
12
+ }
13
+ export interface ConfiguredServices {
14
+ authManager: AuthManager;
15
+ apiClient: ReturnType<typeof createWebApiClient>;
16
+ }
17
+ export interface MobileServiceConfig extends ServiceConfig {
18
+ secureStore: SecureStoreInterface;
19
+ }
20
+ export interface ConfiguredMobileServices {
21
+ authManager: AuthManager;
22
+ apiClient: ReturnType<typeof createMobileApiClient>;
23
+ }
24
+ /**
25
+ * Creates and configures all services for web applications (blueberry, strawberry)
26
+ * Ensures all services use the same API configuration
27
+ */
28
+ export declare const createConfiguredWebServices: (config: ServiceConfig) => ConfiguredServices;
29
+ /**
30
+ * Creates and configures all services for mobile applications (blackberry)
31
+ */
32
+ export declare const createConfiguredMobileServices: (config: MobileServiceConfig) => ConfiguredMobileServices;
33
+ /**
34
+ * Validates service configuration
35
+ */
36
+ export declare const validateServiceConfig: (config: ServiceConfig) => void;
37
+ //# sourceMappingURL=serviceConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceConfig.d.ts","sourceRoot":"","sources":["../../src/config/serviceConfig.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAyB,MAAM,kBAAkB,CAAC;AAEpG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,YAAY,CAAC;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,WAAW,EAAE,oBAAoB,CAAC;CACnC;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;CACrD;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,GAAI,QAAQ,aAAa,KAAG,kBAsBnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,8BAA8B,GAAI,QAAQ,mBAAmB,KAAG,wBAuB5E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,aAAa,KAAG,IAiB7D,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Service Discovery Pattern for API configuration
3
+ * Provides explicit, fail-fast configuration for all shared services
4
+ */
5
+ import { createMobileApiClient, configureWebApiClient } from '../api/apiClient';
6
+ import { createWebAuthManager, createMobileAuthManager } from '../auth/createAuthManager';
7
+ /**
8
+ * Creates and configures all services for web applications (blueberry, strawberry)
9
+ * Ensures all services use the same API configuration
10
+ */
11
+ export const createConfiguredWebServices = (config) => {
12
+ if (!config.apiBaseUrl) {
13
+ throw new Error('API base URL is required for service configuration');
14
+ }
15
+ if (!config.apiBaseUrl.startsWith('http')) {
16
+ throw new Error('API base URL must be a valid HTTP/HTTPS URL');
17
+ }
18
+ // Configure the global webApiClient used by functional services
19
+ const apiClient = configureWebApiClient(config.apiBaseUrl);
20
+ // Create AuthManager with the same configuration
21
+ const authManager = createWebAuthManager({
22
+ apiBaseUrl: config.apiBaseUrl,
23
+ apiTimeout: config.timeout || 30000,
24
+ });
25
+ return {
26
+ authManager,
27
+ apiClient,
28
+ };
29
+ };
30
+ /**
31
+ * Creates and configures all services for mobile applications (blackberry)
32
+ */
33
+ export const createConfiguredMobileServices = (config) => {
34
+ if (!config.apiBaseUrl) {
35
+ throw new Error('API base URL is required for service configuration');
36
+ }
37
+ if (!config.apiBaseUrl.startsWith('http')) {
38
+ throw new Error('API base URL must be a valid HTTP/HTTPS URL');
39
+ }
40
+ // Create mobile API client
41
+ const apiClient = createMobileApiClient(config.apiBaseUrl);
42
+ // Create mobile AuthManager
43
+ const authManager = createMobileAuthManager({
44
+ apiBaseUrl: config.apiBaseUrl,
45
+ secureStore: config.secureStore,
46
+ apiTimeout: config.timeout || 30000,
47
+ });
48
+ return {
49
+ authManager,
50
+ apiClient,
51
+ };
52
+ };
53
+ /**
54
+ * Validates service configuration
55
+ */
56
+ export const validateServiceConfig = (config) => {
57
+ if (!config.apiBaseUrl) {
58
+ throw new Error('API base URL is required');
59
+ }
60
+ if (!config.apiBaseUrl.startsWith('http')) {
61
+ throw new Error('API base URL must be a valid HTTP/HTTPS URL');
62
+ }
63
+ // Environment-specific validations
64
+ if (config.environment === 'production' && config.apiBaseUrl.includes('dev.')) {
65
+ throw new Error('Production environment should not use development API URLs');
66
+ }
67
+ if (config.environment === 'development' && !config.apiBaseUrl.includes('dev.')) {
68
+ console.warn('Development environment is using a non-dev API URL');
69
+ }
70
+ };
package/dist/index.d.ts CHANGED
@@ -34,4 +34,5 @@ export * from './query/usePortfolios';
34
34
  export * from './auth/AuthManager';
35
35
  export * from './auth/createAuthManager';
36
36
  export * from './auth/useAuthManager';
37
+ export * from './config/serviceConfig';
37
38
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,YAAY,EACZ,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAGrB,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAG5C,OAAO,KAAK,eAAe,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,WAAW,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,YAAY,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,gBAAgB,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,gBAAgB,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,iBAAiB,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,kBAAkB,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,iBAAiB,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,yBAAyB,MAAM,gCAAgC,CAAC;AAC5E,OAAO,KAAK,cAAc,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,YAAY,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,aAAa,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,kBAAkB,MAAM,wBAAwB,CAAC;AAG7D,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,YAAY,EACZ,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAGrB,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAG5C,OAAO,KAAK,eAAe,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,WAAW,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,YAAY,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,gBAAgB,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,gBAAgB,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,iBAAiB,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,kBAAkB,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,iBAAiB,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,yBAAyB,MAAM,gCAAgC,CAAC;AAC5E,OAAO,KAAK,cAAc,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,YAAY,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,aAAa,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,kBAAkB,MAAM,wBAAwB,CAAC;AAG7D,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,wBAAwB,CAAC"}
package/dist/index.js CHANGED
@@ -40,3 +40,5 @@ export * from './query/usePortfolios';
40
40
  export * from './auth/AuthManager';
41
41
  export * from './auth/createAuthManager';
42
42
  export * from './auth/useAuthManager';
43
+ // Service Configuration (Service Discovery Pattern)
44
+ export * from './config/serviceConfig';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cranberry-money/shared-services",
3
- "version": "1.12.1",
3
+ "version": "1.13.0",
4
4
  "description": "Shared API services and client for MyPortfolio platform",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",