@aifabrix/miso-client 2.1.2 → 2.2.1

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,267 @@
1
+ /**
2
+ * Type definitions for DataClient browser wrapper
3
+ */
4
+ import { MisoClientConfig } from "./config.types";
5
+ /**
6
+ * ISO 27001 audit logging configuration
7
+ */
8
+ export interface AuditConfig {
9
+ /**
10
+ * Audit detail level
11
+ * - minimal: Only method, URL, status, duration, userId
12
+ * - standard: Includes headers and bodies (masked)
13
+ * - detailed: Includes sizes and more metadata
14
+ * - full: Complete audit trail with all details
15
+ */
16
+ level?: "minimal" | "standard" | "detailed" | "full";
17
+ /**
18
+ * Batch size for queued audit logs (default: 10)
19
+ */
20
+ batchSize?: number;
21
+ /**
22
+ * Maximum response size to include in audit logs (default: 10000)
23
+ */
24
+ maxResponseSize?: number;
25
+ /**
26
+ * Maximum size before skipping masking (default: 50000)
27
+ */
28
+ maxMaskingSize?: number;
29
+ /**
30
+ * Endpoints to skip audit logging (e.g., ['/health', '/metrics'])
31
+ */
32
+ skipEndpoints?: string[];
33
+ /**
34
+ * Enable/disable audit logging (default: true)
35
+ */
36
+ enabled?: boolean;
37
+ }
38
+ /**
39
+ * Cache configuration
40
+ */
41
+ export interface CacheConfig {
42
+ /**
43
+ * Default TTL in seconds (default: 300 = 5 minutes)
44
+ */
45
+ defaultTTL?: number;
46
+ /**
47
+ * Maximum cache size in entries (default: 100)
48
+ */
49
+ maxSize?: number;
50
+ /**
51
+ * Enable cache (default: true)
52
+ */
53
+ enabled?: boolean;
54
+ }
55
+ /**
56
+ * Retry configuration
57
+ */
58
+ export interface RetryConfig {
59
+ /**
60
+ * Maximum number of retries (default: 3)
61
+ */
62
+ maxRetries?: number;
63
+ /**
64
+ * Base delay in milliseconds for exponential backoff (default: 1000)
65
+ */
66
+ baseDelay?: number;
67
+ /**
68
+ * Maximum delay in milliseconds (default: 10000)
69
+ */
70
+ maxDelay?: number;
71
+ /**
72
+ * Enable retry logic (default: true)
73
+ */
74
+ enabled?: boolean;
75
+ }
76
+ /**
77
+ * DataClient configuration
78
+ */
79
+ export interface DataClientConfig {
80
+ /**
81
+ * Base URL for API requests
82
+ */
83
+ baseUrl: string;
84
+ /**
85
+ * MisoClient configuration (required for authentication and audit logging)
86
+ */
87
+ misoConfig: MisoClientConfig;
88
+ /**
89
+ * Token storage keys in localStorage (default: ['token', 'accessToken', 'authToken'])
90
+ */
91
+ tokenKeys?: string[];
92
+ /**
93
+ * Login redirect URL (default: '/login')
94
+ */
95
+ loginUrl?: string;
96
+ /**
97
+ * Cache configuration
98
+ */
99
+ cache?: CacheConfig;
100
+ /**
101
+ * Retry configuration
102
+ */
103
+ retry?: RetryConfig;
104
+ /**
105
+ * ISO 27001 audit logging configuration
106
+ */
107
+ audit?: AuditConfig;
108
+ /**
109
+ * Default request timeout in milliseconds (default: 30000)
110
+ */
111
+ timeout?: number;
112
+ /**
113
+ * Default headers to include in all requests
114
+ */
115
+ defaultHeaders?: Record<string, string>;
116
+ }
117
+ /**
118
+ * Extended RequestInit with DataClient-specific options
119
+ */
120
+ export interface ApiRequestOptions extends RequestInit {
121
+ /**
122
+ * Skip authentication for this request
123
+ */
124
+ skipAuth?: boolean;
125
+ /**
126
+ * Override retry count for this request
127
+ */
128
+ retries?: number;
129
+ /**
130
+ * AbortController signal for cancellation
131
+ */
132
+ signal?: AbortSignal;
133
+ /**
134
+ * Request timeout in milliseconds
135
+ */
136
+ timeout?: number;
137
+ /**
138
+ * Cache options
139
+ */
140
+ cache?: {
141
+ /**
142
+ * Enable caching for this request (default: true for GET requests)
143
+ */
144
+ enabled?: boolean;
145
+ /**
146
+ * Cache TTL in seconds
147
+ */
148
+ ttl?: number;
149
+ /**
150
+ * Cache key (auto-generated if not provided)
151
+ */
152
+ key?: string;
153
+ };
154
+ /**
155
+ * Skip audit logging for this request
156
+ */
157
+ skipAudit?: boolean;
158
+ }
159
+ /**
160
+ * Request interceptor function
161
+ */
162
+ export type RequestInterceptor = (url: string, options: ApiRequestOptions) => Promise<ApiRequestOptions> | ApiRequestOptions;
163
+ /**
164
+ * Response interceptor function
165
+ */
166
+ export type ResponseInterceptor = <T>(response: Response, data: T) => Promise<T> | T;
167
+ /**
168
+ * Error interceptor function
169
+ */
170
+ export type ErrorInterceptor = (error: Error, response?: Response) => Promise<Error> | Error;
171
+ /**
172
+ * Interceptor configuration
173
+ */
174
+ export interface InterceptorConfig {
175
+ /**
176
+ * Request interceptor
177
+ */
178
+ onRequest?: RequestInterceptor;
179
+ /**
180
+ * Response interceptor
181
+ */
182
+ onResponse?: ResponseInterceptor;
183
+ /**
184
+ * Error interceptor
185
+ */
186
+ onError?: ErrorInterceptor;
187
+ }
188
+ /**
189
+ * Request metrics structure
190
+ */
191
+ export interface RequestMetrics {
192
+ /**
193
+ * Total number of requests
194
+ */
195
+ totalRequests: number;
196
+ /**
197
+ * Total number of failed requests
198
+ */
199
+ totalFailures: number;
200
+ /**
201
+ * Average response time in milliseconds
202
+ */
203
+ averageResponseTime: number;
204
+ /**
205
+ * Response time distribution (in milliseconds)
206
+ */
207
+ responseTimeDistribution: {
208
+ min: number;
209
+ max: number;
210
+ p50: number;
211
+ p95: number;
212
+ p99: number;
213
+ };
214
+ /**
215
+ * Error rate (0-1)
216
+ */
217
+ errorRate: number;
218
+ /**
219
+ * Cache hit rate (0-1)
220
+ */
221
+ cacheHitRate: number;
222
+ }
223
+ /**
224
+ * Cache entry structure
225
+ */
226
+ export interface CacheEntry {
227
+ /**
228
+ * Cached data
229
+ */
230
+ data: unknown;
231
+ /**
232
+ * Expiration timestamp
233
+ */
234
+ expiresAt: number;
235
+ /**
236
+ * Cache key
237
+ */
238
+ key: string;
239
+ }
240
+ /**
241
+ * Base API error class
242
+ */
243
+ export declare class ApiError extends Error {
244
+ readonly statusCode?: number;
245
+ readonly response?: Response;
246
+ readonly originalError?: Error;
247
+ constructor(message: string, statusCode?: number, response?: Response, originalError?: Error);
248
+ }
249
+ /**
250
+ * Network error (connection failures, CORS, etc.)
251
+ */
252
+ export declare class NetworkError extends ApiError {
253
+ constructor(message: string, originalError?: Error);
254
+ }
255
+ /**
256
+ * Timeout error
257
+ */
258
+ export declare class TimeoutError extends ApiError {
259
+ constructor(message: string, _timeout: number);
260
+ }
261
+ /**
262
+ * Authentication error (401 Unauthorized)
263
+ */
264
+ export declare class AuthenticationError extends ApiError {
265
+ constructor(message: string, response?: Response);
266
+ }
267
+ //# sourceMappingURL=data-client.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-client.types.d.ts","sourceRoot":"","sources":["../../src/types/data-client.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /**
3
+ * Type definitions for DataClient browser wrapper
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AuthenticationError = exports.TimeoutError = exports.NetworkError = exports.ApiError = void 0;
7
+ /**
8
+ * Base API error class
9
+ */
10
+ class ApiError extends Error {
11
+ constructor(message, statusCode, response, originalError) {
12
+ super(message);
13
+ this.name = "ApiError";
14
+ this.statusCode = statusCode;
15
+ this.response = response;
16
+ this.originalError = originalError;
17
+ if (Error.captureStackTrace) {
18
+ Error.captureStackTrace(this, ApiError);
19
+ }
20
+ }
21
+ }
22
+ exports.ApiError = ApiError;
23
+ /**
24
+ * Network error (connection failures, CORS, etc.)
25
+ */
26
+ class NetworkError extends ApiError {
27
+ constructor(message, originalError) {
28
+ super(message, 0, undefined, originalError);
29
+ this.name = "NetworkError";
30
+ }
31
+ }
32
+ exports.NetworkError = NetworkError;
33
+ /**
34
+ * Timeout error
35
+ */
36
+ class TimeoutError extends ApiError {
37
+ constructor(message, _timeout) {
38
+ super(message, 408);
39
+ this.name = "TimeoutError";
40
+ }
41
+ }
42
+ exports.TimeoutError = TimeoutError;
43
+ /**
44
+ * Authentication error (401 Unauthorized)
45
+ */
46
+ class AuthenticationError extends ApiError {
47
+ constructor(message, response) {
48
+ super(message, 401, response);
49
+ this.name = "AuthenticationError";
50
+ }
51
+ }
52
+ exports.AuthenticationError = AuthenticationError;
53
+ //# sourceMappingURL=data-client.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-client.types.js","sourceRoot":"","sources":["../../src/types/data-client.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAqSH;;GAEG;AACH,MAAa,QAAS,SAAQ,KAAK;IAKjC,YACE,OAAe,EACf,UAAmB,EACnB,QAAmB,EACnB,aAAqB;QAErB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;CACF;AArBD,4BAqBC;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,QAAQ;IACxC,YAAY,OAAe,EAAE,aAAqB;QAChD,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AALD,oCAKC;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,QAAQ;IACxC,YAAY,OAAe,EAAE,QAAgB;QAC3C,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AALD,oCAKC;AAED;;GAEG;AACH,MAAa,mBAAoB,SAAQ,QAAQ;IAC/C,YAAY,OAAe,EAAE,QAAmB;QAC9C,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AALD,kDAKC"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * DataClient - Browser-compatible HTTP client wrapper around MisoClient
3
+ * Provides enhanced HTTP capabilities with ISO 27001 compliance, caching, retry, and more
4
+ */
5
+ import { DataClientConfig, ApiRequestOptions, InterceptorConfig, RequestMetrics, AuditConfig } from "../types/data-client.types";
6
+ export declare class DataClient {
7
+ private config;
8
+ private misoClient;
9
+ private cache;
10
+ private pendingRequests;
11
+ private interceptors;
12
+ private metrics;
13
+ constructor(config: DataClientConfig);
14
+ /**
15
+ * Get authentication token from localStorage
16
+ */
17
+ private getToken;
18
+ /**
19
+ * Check if user is authenticated
20
+ */
21
+ isAuthenticated(): boolean;
22
+ /**
23
+ * Redirect to login page via controller
24
+ * Calls the controller login endpoint with redirect parameter
25
+ * @param redirectUrl - Optional redirect URL to return to after login (defaults to current page URL)
26
+ */
27
+ redirectToLogin(redirectUrl?: string): Promise<void>;
28
+ /**
29
+ * Set interceptors
30
+ */
31
+ setInterceptors(config: InterceptorConfig): void;
32
+ /**
33
+ * Set audit configuration
34
+ */
35
+ setAuditConfig(config: Partial<AuditConfig>): void;
36
+ /**
37
+ * Set log level for MisoClient logger
38
+ * Note: This updates the MisoClient config logLevel if MisoClient is initialized
39
+ * @param level - Log level ('debug' | 'info' | 'warn' | 'error')
40
+ */
41
+ setLogLevel(level: "debug" | "info" | "warn" | "error"): void;
42
+ /**
43
+ * Clear all cached responses
44
+ */
45
+ clearCache(): void;
46
+ /**
47
+ * Get request metrics
48
+ */
49
+ getMetrics(): RequestMetrics;
50
+ /**
51
+ * Check if endpoint should skip audit logging
52
+ */
53
+ private shouldSkipAudit;
54
+ /**
55
+ * Log audit event (ISO 27001 compliance)
56
+ */
57
+ private logAuditEvent;
58
+ /**
59
+ * Make HTTP request with all features (caching, retry, deduplication, audit)
60
+ */
61
+ private request;
62
+ /**
63
+ * Execute HTTP request with retry logic
64
+ */
65
+ private executeRequest;
66
+ /**
67
+ * Make fetch request with timeout and authentication
68
+ */
69
+ private makeFetchRequest;
70
+ /**
71
+ * Merge AbortSignals
72
+ */
73
+ private mergeSignals;
74
+ /**
75
+ * Parse response based on content type
76
+ */
77
+ private parseResponse;
78
+ /**
79
+ * Extract headers from Headers object or Record
80
+ */
81
+ private extractHeaders;
82
+ /**
83
+ * Handle authentication error
84
+ */
85
+ private handleAuthError;
86
+ /**
87
+ * Apply request interceptor
88
+ */
89
+ private applyRequestInterceptor;
90
+ /**
91
+ * GET request
92
+ */
93
+ get<T>(endpoint: string, options?: ApiRequestOptions): Promise<T>;
94
+ /**
95
+ * POST request
96
+ */
97
+ post<T>(endpoint: string, data?: unknown, options?: ApiRequestOptions): Promise<T>;
98
+ /**
99
+ * PUT request
100
+ */
101
+ put<T>(endpoint: string, data?: unknown, options?: ApiRequestOptions): Promise<T>;
102
+ /**
103
+ * PATCH request (uses fetch fallback since MisoClient doesn't support PATCH)
104
+ */
105
+ patch<T>(endpoint: string, data?: unknown, options?: ApiRequestOptions): Promise<T>;
106
+ /**
107
+ * DELETE request
108
+ */
109
+ delete<T>(endpoint: string, options?: ApiRequestOptions): Promise<T>;
110
+ }
111
+ /**
112
+ * Get or create default DataClient instance
113
+ */
114
+ export declare function dataClient(config?: DataClientConfig): DataClient;
115
+ //# sourceMappingURL=data-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-client.d.ts","sourceRoot":"","sources":["../../src/utils/data-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EAEd,WAAW,EAKZ,MAAM,4BAA4B,CAAC;AAwGpC,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,eAAe,CAA4C;IACnE,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,OAAO,CAYb;gBAEU,MAAM,EAAE,gBAAgB;IAiDpC;;OAEG;IACH,OAAO,CAAC,QAAQ;IAUhB;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;;;OAIG;IACG,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C1D;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAIhD;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAIlD;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;IAkB7D;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,UAAU,IAAI,cAAc;IA8B5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;YACW,aAAa;IAoH3B;;OAEG;YACW,OAAO;IA2DrB;;OAEG;YACW,cAAc;IAsJ5B;;OAEG;YACW,gBAAgB;IA2D9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAuBpB;;OAEG;YACW,aAAa;IAW3B;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;YACW,uBAAuB;IAYrC;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,CAAC;IAQvE;;OAEG;IACG,IAAI,CAAC,CAAC,EACV,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAab;;OAEG;IACG,GAAG,CAAC,CAAC,EACT,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAab;;OAEG;IACG,KAAK,CAAC,CAAC,EACX,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAab;;OAEG;IACG,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,CAAC;CAO3E;AAOD;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,UAAU,CAUhE"}