@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
package/dist/index.d.ts.map
CHANGED
|
@@ -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