@aifabrix/miso-client 3.1.2 → 3.2.5
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.
- package/README.md +57 -2
- package/dist/express/client-token-endpoint.d.ts +76 -0
- package/dist/express/client-token-endpoint.d.ts.map +1 -0
- package/dist/express/client-token-endpoint.js +231 -0
- package/dist/express/client-token-endpoint.js.map +1 -0
- package/dist/express/index.d.ts +2 -1
- package/dist/express/index.d.ts.map +1 -1
- package/dist/express/index.js +8 -3
- package/dist/express/index.js.map +1 -1
- package/dist/express/response-middleware.d.ts.map +1 -1
- package/dist/express/response-middleware.js.map +1 -1
- package/dist/index.d.ts +19 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -4
- package/dist/index.js.map +1 -1
- package/dist/services/auth.service.d.ts +26 -4
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +137 -6
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/browser-permission.service.d.ts +60 -0
- package/dist/services/browser-permission.service.d.ts.map +1 -0
- package/dist/services/browser-permission.service.js +159 -0
- package/dist/services/browser-permission.service.js.map +1 -0
- package/dist/services/browser-role.service.d.ts +60 -0
- package/dist/services/browser-role.service.d.ts.map +1 -0
- package/dist/services/browser-role.service.js +159 -0
- package/dist/services/browser-role.service.js.map +1 -0
- package/dist/services/cache.service.d.ts.map +1 -1
- package/dist/services/cache.service.js +4 -0
- package/dist/services/cache.service.js.map +1 -1
- package/dist/services/logger.service.d.ts +99 -24
- package/dist/services/logger.service.d.ts.map +1 -1
- package/dist/services/logger.service.js +174 -44
- package/dist/services/logger.service.js.map +1 -1
- package/dist/services/redis.service.d.ts.map +1 -1
- package/dist/services/redis.service.js +3 -6
- package/dist/services/redis.service.js.map +1 -1
- package/dist/types/config.types.d.ts +22 -0
- package/dist/types/config.types.d.ts.map +1 -1
- package/dist/types/config.types.js.map +1 -1
- package/dist/types/data-client.types.d.ts +10 -0
- package/dist/types/data-client.types.d.ts.map +1 -1
- package/dist/types/data-client.types.js.map +1 -1
- package/dist/utils/audit-log-queue.d.ts +4 -0
- package/dist/utils/audit-log-queue.d.ts.map +1 -1
- package/dist/utils/audit-log-queue.js +22 -2
- package/dist/utils/audit-log-queue.js.map +1 -1
- package/dist/utils/browser-jwt-decoder.d.ts +20 -0
- package/dist/utils/browser-jwt-decoder.d.ts.map +1 -0
- package/dist/utils/browser-jwt-decoder.js +75 -0
- package/dist/utils/browser-jwt-decoder.js.map +1 -0
- package/dist/utils/controller-url-resolver.d.ts +16 -0
- package/dist/utils/controller-url-resolver.d.ts.map +1 -1
- package/dist/utils/controller-url-resolver.js +12 -0
- package/dist/utils/controller-url-resolver.js.map +1 -1
- package/dist/utils/data-client-audit.d.ts.map +1 -1
- package/dist/utils/data-client-audit.js +19 -8
- package/dist/utils/data-client-audit.js.map +1 -1
- package/dist/utils/data-client-auth.d.ts +19 -7
- package/dist/utils/data-client-auth.d.ts.map +1 -1
- package/dist/utils/data-client-auth.js +269 -144
- package/dist/utils/data-client-auth.js.map +1 -1
- package/dist/utils/data-client-auto-init.d.ts +66 -0
- package/dist/utils/data-client-auto-init.d.ts.map +1 -0
- package/dist/utils/data-client-auto-init.js +259 -0
- package/dist/utils/data-client-auto-init.js.map +1 -0
- package/dist/utils/data-client-redirect.d.ts +52 -0
- package/dist/utils/data-client-redirect.d.ts.map +1 -0
- package/dist/utils/data-client-redirect.js +233 -0
- package/dist/utils/data-client-redirect.js.map +1 -0
- package/dist/utils/data-client-request.d.ts +8 -1
- package/dist/utils/data-client-request.d.ts.map +1 -1
- package/dist/utils/data-client-request.js +30 -5
- package/dist/utils/data-client-request.js.map +1 -1
- package/dist/utils/data-client.d.ts +116 -0
- package/dist/utils/data-client.d.ts.map +1 -1
- package/dist/utils/data-client.js +349 -4
- package/dist/utils/data-client.js.map +1 -1
- package/dist/utils/logging-helpers.d.ts +51 -0
- package/dist/utils/logging-helpers.d.ts.map +1 -0
- package/dist/utils/logging-helpers.js +57 -0
- package/dist/utils/logging-helpers.js.map +1 -0
- package/dist/utils/request-context.d.ts +32 -0
- package/dist/utils/request-context.d.ts.map +1 -0
- package/dist/utils/request-context.js +81 -0
- package/dist/utils/request-context.js.map +1 -0
- package/package.json +9 -2
package/README.md
CHANGED
|
@@ -190,6 +190,23 @@ const dataClient = new DataClient({
|
|
|
190
190
|
// Make authenticated requests with automatic audit logging
|
|
191
191
|
const users = await dataClient.get('/api/users');
|
|
192
192
|
const newUser = await dataClient.post('/api/users', { name: 'John' });
|
|
193
|
+
|
|
194
|
+
// OAuth callback is automatically handled on initialization
|
|
195
|
+
// Token is extracted from URL hash fragment (#token=...) and stored securely
|
|
196
|
+
// Hash fragment is immediately removed from URL (< 100ms) for security
|
|
197
|
+
|
|
198
|
+
// Token refresh callback (automatic refresh on 401 errors)
|
|
199
|
+
const dataClientWithRefresh = new DataClient({
|
|
200
|
+
baseUrl: 'https://api.example.com',
|
|
201
|
+
misoConfig: { /* ... */ },
|
|
202
|
+
onTokenRefresh: async () => {
|
|
203
|
+
// Call your backend endpoint that handles refresh token securely
|
|
204
|
+
const response = await fetch('/api/refresh-token', {
|
|
205
|
+
credentials: 'include', // Include cookies for auth
|
|
206
|
+
});
|
|
207
|
+
return await response.json(); // { token: string, expiresIn: number }
|
|
208
|
+
},
|
|
209
|
+
});
|
|
193
210
|
```
|
|
194
211
|
|
|
195
212
|
→ [DataClient Documentation](docs/data-client.md) - Includes security guide and Client Token Pattern
|
|
@@ -256,7 +273,7 @@ if (token) {
|
|
|
256
273
|
|
|
257
274
|
### Step 4: Activate RBAC (Roles)
|
|
258
275
|
|
|
259
|
-
**What happens:** Check user roles to control access. Roles are cached in Redis for performance.
|
|
276
|
+
**What happens:** Check user roles to control access. Roles are cached in Redis for performance. Token validation is also cached (15-minute TTL) to reduce API calls.
|
|
260
277
|
|
|
261
278
|
```typescript
|
|
262
279
|
import { MisoClient, loadConfig } from '@aifabrix/miso-client';
|
|
@@ -288,6 +305,8 @@ if (isAdmin) {
|
|
|
288
305
|
|
|
289
306
|
**What happens:** Application logs are sent to the Miso Controller with client token authentication.
|
|
290
307
|
|
|
308
|
+
**Basic Logging:**
|
|
309
|
+
|
|
291
310
|
```typescript
|
|
292
311
|
import { MisoClient, loadConfig } from '@aifabrix/miso-client';
|
|
293
312
|
|
|
@@ -304,7 +323,42 @@ await client.log.error('Operation failed', { error: err.message });
|
|
|
304
323
|
await client.log.warn('Unusual activity', { details: '...' });
|
|
305
324
|
```
|
|
306
325
|
|
|
307
|
-
**
|
|
326
|
+
**Fluent API with Request Context (Express):**
|
|
327
|
+
|
|
328
|
+
```typescript
|
|
329
|
+
import { Request } from 'express';
|
|
330
|
+
|
|
331
|
+
// Auto-extract context from Express Request
|
|
332
|
+
app.get('/api/users', async (req: Request, res) => {
|
|
333
|
+
await client.log
|
|
334
|
+
.withRequest(req)
|
|
335
|
+
.info('Users list accessed');
|
|
336
|
+
// Automatically includes: IP, method, path, userAgent, correlationId, userId
|
|
337
|
+
});
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
**Indexed Context for Fast Queries:**
|
|
341
|
+
|
|
342
|
+
```typescript
|
|
343
|
+
import { extractLoggingContext } from '@aifabrix/miso-client';
|
|
344
|
+
|
|
345
|
+
const logContext = extractLoggingContext({
|
|
346
|
+
source: {
|
|
347
|
+
key: 'datasource-1',
|
|
348
|
+
displayName: 'PostgreSQL DB',
|
|
349
|
+
externalSystem: { key: 'system-1', displayName: 'External API' }
|
|
350
|
+
},
|
|
351
|
+
record: { key: 'record-123', displayName: 'User Profile' }
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
await client.log
|
|
355
|
+
.withIndexedContext(logContext)
|
|
356
|
+
.addCorrelation(correlationId)
|
|
357
|
+
.addUser(userId)
|
|
358
|
+
.error('Sync failed');
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
**What happens to logs?** They're sent to the Miso Controller for centralized monitoring and analysis. Client token is automatically included. Indexed context fields enable fast database queries for observability and compliance.
|
|
308
362
|
|
|
309
363
|
**Event Emission Mode:** When embedding the SDK directly in your own application, enable `emitEvents = true` to receive logs as Node.js events instead of HTTP calls:
|
|
310
364
|
|
|
@@ -820,6 +874,7 @@ interface MisoClientConfig {
|
|
|
820
874
|
cache?: {
|
|
821
875
|
roleTTL?: number; // Role cache TTL (default: 900s)
|
|
822
876
|
permissionTTL?: number; // Permission cache TTL (default: 900s)
|
|
877
|
+
tokenValidationTTL?: number; // Token validation cache TTL (default: 900s)
|
|
823
878
|
};
|
|
824
879
|
audit?: AuditConfig; // Optional: Audit logging configuration
|
|
825
880
|
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client Token Endpoint Helper
|
|
3
|
+
* Express route handler that automatically enriches client-token response with DataClient configuration
|
|
4
|
+
*
|
|
5
|
+
* Provides zero-config server-side setup for DataClient initialization
|
|
6
|
+
*/
|
|
7
|
+
import { Request, Response } from "express";
|
|
8
|
+
import { MisoClient } from "../index";
|
|
9
|
+
/**
|
|
10
|
+
* DataClient configuration returned by client-token endpoint
|
|
11
|
+
* Contains all necessary configuration for browser-side DataClient initialization
|
|
12
|
+
*/
|
|
13
|
+
export interface DataClientConfigResponse {
|
|
14
|
+
/** API base URL (derived from request) */
|
|
15
|
+
baseUrl: string;
|
|
16
|
+
/** MISO Controller URL (from misoClient config) */
|
|
17
|
+
controllerUrl: string;
|
|
18
|
+
/** Public controller URL for browser environments (if set) */
|
|
19
|
+
controllerPublicUrl?: string;
|
|
20
|
+
/** Client ID (from misoClient config) */
|
|
21
|
+
clientId: string;
|
|
22
|
+
/** Client token endpoint URI */
|
|
23
|
+
clientTokenUri: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Client token endpoint response
|
|
27
|
+
* Includes token, expiration, and DataClient configuration
|
|
28
|
+
*/
|
|
29
|
+
export interface ClientTokenResponse {
|
|
30
|
+
/** Client token string */
|
|
31
|
+
token: string;
|
|
32
|
+
/** Token expiration time in seconds */
|
|
33
|
+
expiresIn: number;
|
|
34
|
+
/** DataClient configuration (included when includeConfig is true) */
|
|
35
|
+
config?: DataClientConfigResponse;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Options for createClientTokenEndpoint
|
|
39
|
+
*/
|
|
40
|
+
export interface ClientTokenEndpointOptions {
|
|
41
|
+
/** Client token endpoint URI (default: '/api/v1/auth/client-token') */
|
|
42
|
+
clientTokenUri?: string;
|
|
43
|
+
/** Token expiration time in seconds (default: 1800) */
|
|
44
|
+
expiresIn?: number;
|
|
45
|
+
/** Whether to include DataClient config in response (default: true) */
|
|
46
|
+
includeConfig?: boolean;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Type guard to check if response includes config
|
|
50
|
+
*
|
|
51
|
+
* @param response - Client token response
|
|
52
|
+
* @returns True if response includes config
|
|
53
|
+
*/
|
|
54
|
+
export declare function hasConfig(response: ClientTokenResponse): response is ClientTokenResponse & {
|
|
55
|
+
config: DataClientConfigResponse;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Create Express route handler for client-token endpoint
|
|
59
|
+
* Automatically enriches response with DataClient configuration
|
|
60
|
+
*
|
|
61
|
+
* @param misoClient - MisoClient instance (must be initialized)
|
|
62
|
+
* @param options - Optional configuration
|
|
63
|
+
* @returns Express route handler function
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* import { MisoClient, createClientTokenEndpoint } from '@aifabrix/miso-client';
|
|
68
|
+
*
|
|
69
|
+
* const misoClient = new MisoClient(loadConfig());
|
|
70
|
+
* await misoClient.initialize();
|
|
71
|
+
*
|
|
72
|
+
* app.post('/api/v1/auth/client-token', createClientTokenEndpoint(misoClient));
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
export declare function createClientTokenEndpoint(misoClient: MisoClient, options?: ClientTokenEndpointOptions): (req: Request, res: Response) => Promise<void>;
|
|
76
|
+
//# sourceMappingURL=client-token-endpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-token-endpoint.d.ts","sourceRoot":"","sources":["../../src/express/client-token-endpoint.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAEhB,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IAEtB,8DAA8D;IAC9D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IAEjB,gCAAgC;IAChC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IAEd,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAElB,qEAAqE;IACrE,MAAM,CAAC,EAAE,wBAAwB,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,QAAQ,IAAI,mBAAmB,GAAG;IAAE,MAAM,EAAE,wBAAwB,CAAA;CAAE,CAE/H;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,0BAA0B,GACnC,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAuNhD"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Client Token Endpoint Helper
|
|
4
|
+
* Express route handler that automatically enriches client-token response with DataClient configuration
|
|
5
|
+
*
|
|
6
|
+
* Provides zero-config server-side setup for DataClient initialization
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.hasConfig = hasConfig;
|
|
10
|
+
exports.createClientTokenEndpoint = createClientTokenEndpoint;
|
|
11
|
+
const environment_token_1 = require("../utils/environment-token");
|
|
12
|
+
/**
|
|
13
|
+
* Type guard to check if response includes config
|
|
14
|
+
*
|
|
15
|
+
* @param response - Client token response
|
|
16
|
+
* @returns True if response includes config
|
|
17
|
+
*/
|
|
18
|
+
function hasConfig(response) {
|
|
19
|
+
return response.config !== undefined;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create Express route handler for client-token endpoint
|
|
23
|
+
* Automatically enriches response with DataClient configuration
|
|
24
|
+
*
|
|
25
|
+
* @param misoClient - MisoClient instance (must be initialized)
|
|
26
|
+
* @param options - Optional configuration
|
|
27
|
+
* @returns Express route handler function
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* import { MisoClient, createClientTokenEndpoint } from '@aifabrix/miso-client';
|
|
32
|
+
*
|
|
33
|
+
* const misoClient = new MisoClient(loadConfig());
|
|
34
|
+
* await misoClient.initialize();
|
|
35
|
+
*
|
|
36
|
+
* app.post('/api/v1/auth/client-token', createClientTokenEndpoint(misoClient));
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
function createClientTokenEndpoint(misoClient, options) {
|
|
40
|
+
const opts = {
|
|
41
|
+
clientTokenUri: "/api/v1/auth/client-token",
|
|
42
|
+
expiresIn: 1800,
|
|
43
|
+
includeConfig: true,
|
|
44
|
+
...options,
|
|
45
|
+
};
|
|
46
|
+
return async (req, res) => {
|
|
47
|
+
// Helper to check if response was already sent
|
|
48
|
+
const isResponseSent = () => res.headersSent || res.writableEnded;
|
|
49
|
+
try {
|
|
50
|
+
// Check if misoClient is initialized
|
|
51
|
+
if (!misoClient.isInitialized()) {
|
|
52
|
+
if (!isResponseSent()) {
|
|
53
|
+
res.status(503).json({
|
|
54
|
+
error: "Service Unavailable",
|
|
55
|
+
message: "MisoClient is not initialized",
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
// Get token with origin validation (throws if validation fails)
|
|
61
|
+
// Wrap in Promise.race with timeout to ensure we don't hang
|
|
62
|
+
// Fail fast after 5 seconds if controller is unreachable
|
|
63
|
+
const timeoutMs = 5000; // 5 seconds - fail fast if controller is unreachable
|
|
64
|
+
const tokenPromise = (0, environment_token_1.getEnvironmentToken)(misoClient, req);
|
|
65
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
66
|
+
setTimeout(() => {
|
|
67
|
+
reject(new Error("Request timeout: Failed to get environment token within 5 seconds"));
|
|
68
|
+
}, timeoutMs);
|
|
69
|
+
});
|
|
70
|
+
let token;
|
|
71
|
+
try {
|
|
72
|
+
token = await Promise.race([tokenPromise, timeoutPromise]);
|
|
73
|
+
}
|
|
74
|
+
catch (tokenError) {
|
|
75
|
+
// If response already sent, don't try to send again
|
|
76
|
+
if (isResponseSent()) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const errorMessage = tokenError instanceof Error ? tokenError.message : "Unknown error";
|
|
80
|
+
// Check if it's an origin validation error (403)
|
|
81
|
+
if (errorMessage.includes("Origin validation failed")) {
|
|
82
|
+
res.status(403).json({
|
|
83
|
+
error: "Forbidden",
|
|
84
|
+
message: errorMessage,
|
|
85
|
+
});
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// Check if it's our timeout wrapper error (specific message from timeout promise)
|
|
89
|
+
const isTimeoutWrapperError = errorMessage.includes("Request timeout: Failed to get environment token within 5 seconds");
|
|
90
|
+
// Check if error message contains HTTP status codes (indicates HTTP error, not timeout)
|
|
91
|
+
// AuthService wraps axios errors with status info like "status: 401"
|
|
92
|
+
const httpStatusMatch = errorMessage.match(/status:\s*(\d+)/i);
|
|
93
|
+
const httpStatus = httpStatusMatch ? parseInt(httpStatusMatch[1], 10) : undefined;
|
|
94
|
+
const isHttpError = httpStatus !== undefined;
|
|
95
|
+
// Also try to extract axios error details from the error chain
|
|
96
|
+
let extractedHttpStatus = httpStatus;
|
|
97
|
+
let httpStatusText;
|
|
98
|
+
// Try to extract axios error details from the error chain
|
|
99
|
+
let currentError = tokenError;
|
|
100
|
+
for (let i = 0; i < 5 && currentError; i++) {
|
|
101
|
+
if (currentError &&
|
|
102
|
+
typeof currentError === "object" &&
|
|
103
|
+
"isAxiosError" in currentError &&
|
|
104
|
+
currentError.isAxiosError) {
|
|
105
|
+
const axiosError = currentError;
|
|
106
|
+
if (axiosError.response) {
|
|
107
|
+
// Has response = HTTP error (not timeout)
|
|
108
|
+
extractedHttpStatus = axiosError.response.status;
|
|
109
|
+
httpStatusText = axiosError.response.statusText;
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
// No response but has request = network/timeout error
|
|
113
|
+
if (axiosError.request && !axiosError.response) {
|
|
114
|
+
// This is a network/timeout error
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Check if error has a cause (for chained errors)
|
|
119
|
+
if (currentError && typeof currentError === "object" && "cause" in currentError) {
|
|
120
|
+
currentError = currentError.cause;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Use extracted status if available, otherwise use parsed status
|
|
127
|
+
const finalHttpStatus = extractedHttpStatus || httpStatus;
|
|
128
|
+
// If it's an HTTP error (like 401), return appropriate status code
|
|
129
|
+
if (isHttpError && finalHttpStatus) {
|
|
130
|
+
// Map common HTTP errors to appropriate status codes
|
|
131
|
+
if (finalHttpStatus === 401) {
|
|
132
|
+
res.status(401).json({
|
|
133
|
+
error: "Unauthorized",
|
|
134
|
+
message: "Failed to get environment token: Invalid client credentials or application not found",
|
|
135
|
+
});
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
if (finalHttpStatus === 403) {
|
|
139
|
+
res.status(403).json({
|
|
140
|
+
error: "Forbidden",
|
|
141
|
+
message: "Failed to get environment token: Access denied",
|
|
142
|
+
});
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
// Other HTTP errors
|
|
146
|
+
res.status(finalHttpStatus).json({
|
|
147
|
+
error: httpStatusText || "Error",
|
|
148
|
+
message: errorMessage,
|
|
149
|
+
});
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
// Check if it's a timeout error (from our wrapper or axios timeout)
|
|
153
|
+
if (isTimeoutWrapperError || errorMessage.includes("timeout") || errorMessage.includes("Timeout")) {
|
|
154
|
+
res.status(504).json({
|
|
155
|
+
error: "Gateway Timeout",
|
|
156
|
+
message: "Failed to get environment token: Controller request timed out",
|
|
157
|
+
});
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
// Other errors (500)
|
|
161
|
+
res.status(500).json({
|
|
162
|
+
error: "Internal Server Error",
|
|
163
|
+
message: errorMessage,
|
|
164
|
+
});
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
// Build response
|
|
168
|
+
const response = {
|
|
169
|
+
token,
|
|
170
|
+
expiresIn: opts.expiresIn,
|
|
171
|
+
};
|
|
172
|
+
// Include config if requested
|
|
173
|
+
if (opts.includeConfig) {
|
|
174
|
+
const config = misoClient.getConfig();
|
|
175
|
+
// Derive baseUrl from request
|
|
176
|
+
const baseUrl = `${req.protocol}://${req.get("host") || "localhost"}`;
|
|
177
|
+
// Get controller URL (prefer controllerPublicUrl for browser, fallback to controllerUrl)
|
|
178
|
+
const controllerUrl = config.controllerPublicUrl || config.controllerUrl;
|
|
179
|
+
if (!controllerUrl) {
|
|
180
|
+
if (!isResponseSent()) {
|
|
181
|
+
res.status(500).json({
|
|
182
|
+
error: "Internal Server Error",
|
|
183
|
+
message: "Controller URL not configured",
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
response.config = {
|
|
189
|
+
baseUrl,
|
|
190
|
+
controllerUrl,
|
|
191
|
+
controllerPublicUrl: config.controllerPublicUrl,
|
|
192
|
+
clientId: config.clientId,
|
|
193
|
+
clientTokenUri: opts.clientTokenUri,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
// Send response if not already sent
|
|
197
|
+
if (!isResponseSent()) {
|
|
198
|
+
res.json(response);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
// Final catch-all error handler
|
|
203
|
+
if (isResponseSent()) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
207
|
+
// Check if it's an origin validation error (403)
|
|
208
|
+
if (errorMessage.includes("Origin validation failed")) {
|
|
209
|
+
res.status(403).json({
|
|
210
|
+
error: "Forbidden",
|
|
211
|
+
message: errorMessage,
|
|
212
|
+
});
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
// Check if it's a timeout error
|
|
216
|
+
if (errorMessage.includes("timeout") || errorMessage.includes("Timeout")) {
|
|
217
|
+
res.status(504).json({
|
|
218
|
+
error: "Gateway Timeout",
|
|
219
|
+
message: "Failed to get environment token: Request timed out",
|
|
220
|
+
});
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
// Other errors (500)
|
|
224
|
+
res.status(500).json({
|
|
225
|
+
error: "Internal Server Error",
|
|
226
|
+
message: errorMessage,
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=client-token-endpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-token-endpoint.js","sourceRoot":"","sources":["../../src/express/client-token-endpoint.ts"],"names":[],"mappings":"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"}
|
package/dist/express/index.d.ts
CHANGED
|
@@ -15,5 +15,6 @@ export { getEnvironmentToken } from "../utils/environment-token";
|
|
|
15
15
|
export { extractClientTokenInfo } from "../utils/token-utils";
|
|
16
16
|
export type { ClientTokenInfo } from "../utils/token-utils";
|
|
17
17
|
export type { OriginValidationResult } from "../utils/origin-validator";
|
|
18
|
-
|
|
18
|
+
export { createClientTokenEndpoint, hasConfig, } from "./client-token-endpoint";
|
|
19
|
+
export type { ClientTokenEndpointOptions, ClientTokenResponse, DataClientConfigResponse, } from "./client-token-endpoint";
|
|
19
20
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/express/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGlE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGhF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGxE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/express/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGlE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGhF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGxE,OAAO,EACL,yBAAyB,EACzB,SAAS,GACV,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,0BAA0B,EAC1B,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC"}
|
package/dist/express/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Generic helpers for building Express.js REST APIs
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.extractClientTokenInfo = exports.getEnvironmentToken = exports.validateOrigin = exports.EncryptionUtil = exports.sendErrorResponse = exports.getErrorTitle = exports.getErrorTypeUri = exports.handleRouteError = exports.setErrorLogger = exports.createErrorResponse = exports.createSuccessResponse = exports.AppError = exports.ValidationHelper = exports.asyncHandlerNamed = exports.asyncHandler = exports.injectResponseHelpers = exports.ResponseHelper = void 0;
|
|
7
|
+
exports.hasConfig = exports.createClientTokenEndpoint = exports.extractClientTokenInfo = exports.getEnvironmentToken = exports.validateOrigin = exports.EncryptionUtil = exports.sendErrorResponse = exports.getErrorTitle = exports.getErrorTypeUri = exports.handleRouteError = exports.setErrorLogger = exports.createErrorResponse = exports.createSuccessResponse = exports.AppError = exports.ValidationHelper = exports.asyncHandlerNamed = exports.asyncHandler = exports.injectResponseHelpers = exports.ResponseHelper = void 0;
|
|
8
8
|
// Response helpers
|
|
9
9
|
var response_helper_1 = require("./response-helper");
|
|
10
10
|
Object.defineProperty(exports, "ResponseHelper", { enumerable: true, get: function () { return response_helper_1.ResponseHelper; } });
|
|
@@ -41,6 +41,11 @@ var environment_token_1 = require("../utils/environment-token");
|
|
|
41
41
|
Object.defineProperty(exports, "getEnvironmentToken", { enumerable: true, get: function () { return environment_token_1.getEnvironmentToken; } });
|
|
42
42
|
var token_utils_1 = require("../utils/token-utils");
|
|
43
43
|
Object.defineProperty(exports, "extractClientTokenInfo", { enumerable: true, get: function () { return token_utils_1.extractClientTokenInfo; } });
|
|
44
|
-
//
|
|
45
|
-
require("./
|
|
44
|
+
// Client token endpoint helper
|
|
45
|
+
var client_token_endpoint_1 = require("./client-token-endpoint");
|
|
46
|
+
Object.defineProperty(exports, "createClientTokenEndpoint", { enumerable: true, get: function () { return client_token_endpoint_1.createClientTokenEndpoint; } });
|
|
47
|
+
Object.defineProperty(exports, "hasConfig", { enumerable: true, get: function () { return client_token_endpoint_1.hasConfig; } });
|
|
48
|
+
// Note: express.d.ts provides type augmentation for Express Response types.
|
|
49
|
+
// It doesn't need to be imported - TypeScript automatically picks up .d.ts files
|
|
50
|
+
// in the same directory. The build script copies it to dist/express/express.d.ts.
|
|
46
51
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/express/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,mBAAmB;AACnB,qDAAmE;AAA1D,iHAAA,cAAc,OAAA;AACvB,6DAA8D;AAArD,4HAAA,qBAAqB,OAAA;AAE9B,gBAAgB;AAChB,iDAAkE;AAAzD,6GAAA,YAAY,OAAA;AAAE,kHAAA,iBAAiB,OAAA;AAExC,aAAa;AACb,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AAEzB,yBAAyB;AACzB,6CAOuB;AANrB,uGAAA,QAAQ,OAAA;AAIR,oHAAA,qBAAqB,OAAA;AACrB,kHAAA,mBAAmB,OAAA;AAGrB,6BAA6B;AAC7B,iDAAgF;AAA1D,+GAAA,cAAc,OAAA;AAAE,iHAAA,gBAAgB,OAAA;AAEtD,4BAA4B;AAC5B,mDAM0B;AAHxB,iHAAA,eAAe,OAAA;AACf,+GAAA,aAAa,OAAA;AACb,mHAAA,iBAAiB,OAAA;AAGnB,aAAa;AACb,2CAA8C;AAArC,4GAAA,cAAc,OAAA;AAEvB,oDAAoD;AACpD,8DAA2D;AAAlD,kHAAA,cAAc,OAAA;AACvB,gEAAiE;AAAxD,wHAAA,mBAAmB,OAAA;AAC5B,oDAA8D;AAArD,qHAAA,sBAAsB,OAAA;AAI/B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/express/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,mBAAmB;AACnB,qDAAmE;AAA1D,iHAAA,cAAc,OAAA;AACvB,6DAA8D;AAArD,4HAAA,qBAAqB,OAAA;AAE9B,gBAAgB;AAChB,iDAAkE;AAAzD,6GAAA,YAAY,OAAA;AAAE,kHAAA,iBAAiB,OAAA;AAExC,aAAa;AACb,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AAEzB,yBAAyB;AACzB,6CAOuB;AANrB,uGAAA,QAAQ,OAAA;AAIR,oHAAA,qBAAqB,OAAA;AACrB,kHAAA,mBAAmB,OAAA;AAGrB,6BAA6B;AAC7B,iDAAgF;AAA1D,+GAAA,cAAc,OAAA;AAAE,iHAAA,gBAAgB,OAAA;AAEtD,4BAA4B;AAC5B,mDAM0B;AAHxB,iHAAA,eAAe,OAAA;AACf,+GAAA,aAAa,OAAA;AACb,mHAAA,iBAAiB,OAAA;AAGnB,aAAa;AACb,2CAA8C;AAArC,4GAAA,cAAc,OAAA;AAEvB,oDAAoD;AACpD,8DAA2D;AAAlD,kHAAA,cAAc,OAAA;AACvB,gEAAiE;AAAxD,wHAAA,mBAAmB,OAAA;AAC5B,oDAA8D;AAArD,qHAAA,sBAAsB,OAAA;AAI/B,+BAA+B;AAC/B,iEAGiC;AAF/B,kIAAA,yBAAyB,OAAA;AACzB,kHAAA,SAAS,OAAA;AAQX,4EAA4E;AAC5E,iFAAiF;AACjF,kFAAkF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-middleware.d.ts","sourceRoot":"","sources":["../../src/express/response-middleware.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"response-middleware.d.ts","sourceRoot":"","sources":["../../src/express/response-middleware.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG1D;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,IAAI,CAiBN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-middleware.js","sourceRoot":"","sources":["../../src/express/response-middleware.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"response-middleware.js","sourceRoot":"","sources":["../../src/express/response-middleware.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAkBH,sDAqBC;AAlCD,uDAAmE;AAEnE;;;;;;;;;;GAUG;AACH,SAAgB,qBAAqB,CACnC,GAAY,EACZ,GAAa,EACb,IAAkB;IAElB,wBAAwB;IACxB,GAAG,CAAC,OAAO,GAAG,CAAI,IAAO,EAAE,OAAgB,EAAE,EAAE,CAC7C,gCAAc,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAE7C,GAAG,CAAC,OAAO,GAAG,CAAI,IAAO,EAAE,OAAgB,EAAE,EAAE,CAC7C,gCAAc,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAE7C,GAAG,CAAC,SAAS,GAAG,CAAI,KAAU,EAAE,IAAoB,EAAE,EAAE,CACtD,gCAAc,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAE7C,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,gCAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAEpD,GAAG,CAAC,QAAQ,GAAG,CAAI,IAAQ,EAAE,OAAgB,EAAE,EAAE,CAC/C,gCAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAE9C,IAAI,EAAE,CAAC;AACT,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -102,6 +102,13 @@ export declare class MisoClient {
|
|
|
102
102
|
logout(params: {
|
|
103
103
|
token: string;
|
|
104
104
|
}): Promise<import("./types/config.types").LogoutResponse>;
|
|
105
|
+
/**
|
|
106
|
+
* Refresh user access token using refresh token
|
|
107
|
+
* @param refreshToken - Refresh token to exchange for new access token
|
|
108
|
+
* @param authStrategy - Optional authentication strategy override
|
|
109
|
+
* @returns New access token, refresh token, and expiration info, or null on error
|
|
110
|
+
*/
|
|
111
|
+
refreshToken(refreshToken: string, authStrategy?: AuthStrategy): Promise<import("./types/config.types").RefreshTokenResponse | null>;
|
|
105
112
|
/**
|
|
106
113
|
* Get user roles (cached in Redis if available)
|
|
107
114
|
* @param token - User authentication token
|
|
@@ -224,6 +231,9 @@ export * from "./types/sort.types";
|
|
|
224
231
|
export type { ErrorResponse as ErrorResponseFromErrors, ErrorEnvelope, } from "./types/errors.types";
|
|
225
232
|
export { AuthService } from "./services/auth.service";
|
|
226
233
|
export { RoleService } from "./services/role.service";
|
|
234
|
+
export { PermissionService } from "./services/permission.service";
|
|
235
|
+
export { BrowserPermissionService } from "./services/browser-permission.service";
|
|
236
|
+
export { BrowserRoleService } from "./services/browser-role.service";
|
|
227
237
|
export { LoggerService } from "./services/logger.service";
|
|
228
238
|
export { RedisService } from "./services/redis.service";
|
|
229
239
|
export { CacheService } from "./services/cache.service";
|
|
@@ -234,13 +244,20 @@ export { getEnvironmentToken } from "./utils/environment-token";
|
|
|
234
244
|
export { extractClientTokenInfo } from "./utils/token-utils";
|
|
235
245
|
export type { ClientTokenInfo } from "./utils/token-utils";
|
|
236
246
|
export type { OriginValidationResult } from "./utils/origin-validator";
|
|
237
|
-
export { resolveControllerUrl, isBrowser } from "./utils/controller-url-resolver";
|
|
247
|
+
export { resolveControllerUrl, isBrowser, validateUrl } from "./utils/controller-url-resolver";
|
|
248
|
+
export { extractLoggingContext } from "./utils/logging-helpers";
|
|
249
|
+
export type { IndexedLoggingContext, HasKey, HasExternalSystem } from "./utils/logging-helpers";
|
|
250
|
+
export { extractRequestContext } from "./utils/request-context";
|
|
251
|
+
export type { RequestContext } from "./utils/request-context";
|
|
238
252
|
export * from "./utils/pagination.utils";
|
|
239
253
|
export * from "./utils/filter.utils";
|
|
240
254
|
export * from "./utils/sort.utils";
|
|
241
255
|
export { MisoClientError, ApiErrorException, transformError, handleApiError, } from "./utils/errors";
|
|
242
|
-
export { ResponseHelper, PaginationMeta, injectResponseHelpers, asyncHandler, asyncHandlerNamed, ValidationHelper, AppError, ApiError, ValidationError, ApiResponse, createSuccessResponse, createErrorResponse, ErrorLogger, setErrorLogger, handleRouteError, RBACErrorExtensions, getErrorTypeUri, getErrorTitle, sendErrorResponse, EncryptionUtil, } from "./express";
|
|
256
|
+
export { ResponseHelper, PaginationMeta, injectResponseHelpers, asyncHandler, asyncHandlerNamed, ValidationHelper, AppError, ApiError, ValidationError, ApiResponse, createSuccessResponse, createErrorResponse, ErrorLogger, setErrorLogger, handleRouteError, RBACErrorExtensions, getErrorTypeUri, getErrorTitle, sendErrorResponse, EncryptionUtil, createClientTokenEndpoint, hasConfig, } from "./express";
|
|
257
|
+
export type { ClientTokenEndpointOptions, ClientTokenResponse, DataClientConfigResponse, } from "./express";
|
|
243
258
|
export { ErrorResponse as ExpressErrorResponse } from "./express/error-response";
|
|
244
259
|
export { DataClient, dataClient } from "./utils/data-client";
|
|
245
260
|
export type { DataClientConfig, ApiRequestOptions, InterceptorConfig, RequestMetrics, AuditConfig as DataClientAuditConfig, CacheEntry, NetworkError, TimeoutError, AuthenticationError, ApiError as DataClientApiError, } from "./types/data-client.types";
|
|
261
|
+
export { autoInitializeDataClient, getCachedDataClientConfig } from "./utils/data-client-auto-init";
|
|
262
|
+
export type { AutoInitOptions } from "./utils/data-client-auto-init";
|
|
246
263
|
//# sourceMappingURL=index.d.ts.map
|
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;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAKxD,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAwC,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACxG,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,gBAAgB;IA4CpC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;OAEG;IACH,aAAa,IAAI,OAAO;IAMxB;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE;YAAE,aAAa,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GAAG,MAAM,GAAG,IAAI;IAerE;;;;;;;OAOG;IACH,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,sBAAsB;IAK/E;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5C;;;;;;;;;;;;OAYG;IACG,KAAK,CAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,OAAO,sBAAsB,EAAE,aAAa,CAAC;IAIzD;;;;OAIG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,OAAO,CAAC;IAInB;;;;OAIG;IACG,OAAO,CACX,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAI3B;;;;OAIG;IACG,WAAW,CACf,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAI3B;;;;OAIG;IACG,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,OAAO,CAAC;IAInB;;;;;OAKG;IACG,MAAM,CAAC,MAAM,EAAE;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,OAAO,sBAAsB,EAAE,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -17,7 +17,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
17
17
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.dataClient = exports.DataClient = exports.EncryptionUtil = exports.sendErrorResponse = exports.getErrorTitle = exports.getErrorTypeUri = exports.handleRouteError = exports.setErrorLogger = exports.createErrorResponse = exports.createSuccessResponse = exports.AppError = exports.ValidationHelper = exports.asyncHandlerNamed = exports.asyncHandler = exports.injectResponseHelpers = exports.ResponseHelper = exports.handleApiError = exports.transformError = exports.ApiErrorException = exports.MisoClientError = exports.isBrowser = exports.resolveControllerUrl = exports.extractClientTokenInfo = exports.getEnvironmentToken = exports.validateOrigin = exports.loadConfig = exports.HttpClient = exports.CacheService = exports.RedisService = exports.LoggerService = exports.RoleService = exports.AuthService = exports.MisoClient = void 0;
|
|
20
|
+
exports.getCachedDataClientConfig = exports.autoInitializeDataClient = exports.dataClient = exports.DataClient = exports.hasConfig = exports.createClientTokenEndpoint = exports.EncryptionUtil = exports.sendErrorResponse = exports.getErrorTitle = exports.getErrorTypeUri = exports.handleRouteError = exports.setErrorLogger = exports.createErrorResponse = exports.createSuccessResponse = exports.AppError = exports.ValidationHelper = exports.asyncHandlerNamed = exports.asyncHandler = exports.injectResponseHelpers = exports.ResponseHelper = exports.handleApiError = exports.transformError = exports.ApiErrorException = exports.MisoClientError = exports.extractRequestContext = exports.extractLoggingContext = exports.validateUrl = exports.isBrowser = exports.resolveControllerUrl = exports.extractClientTokenInfo = exports.getEnvironmentToken = exports.validateOrigin = exports.loadConfig = exports.HttpClient = exports.CacheService = exports.RedisService = exports.LoggerService = exports.BrowserRoleService = exports.BrowserPermissionService = exports.PermissionService = exports.RoleService = exports.AuthService = exports.MisoClient = void 0;
|
|
21
21
|
const auth_service_1 = require("./services/auth.service");
|
|
22
22
|
const role_service_1 = require("./services/role.service");
|
|
23
23
|
const permission_service_1 = require("./services/permission.service");
|
|
@@ -51,10 +51,10 @@ class MisoClient {
|
|
|
51
51
|
// Type assertion needed because httpClient property is private in LoggerService but needs to be updated
|
|
52
52
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
53
53
|
this.logger.httpClient = this.httpClient;
|
|
54
|
-
//
|
|
55
|
-
this.auth = new auth_service_1.AuthService(this.httpClient, this.redis);
|
|
56
|
-
// Initialize cache service with Redis support (used by roles and permissions)
|
|
54
|
+
// Initialize cache service with Redis support (used by auth, roles and permissions)
|
|
57
55
|
this.cacheService = new cache_service_1.CacheService(this.redis);
|
|
56
|
+
// Create services
|
|
57
|
+
this.auth = new auth_service_1.AuthService(this.httpClient, this.cacheService);
|
|
58
58
|
// Initialize services that use cache
|
|
59
59
|
this.roles = new role_service_1.RoleService(this.httpClient, this.cacheService);
|
|
60
60
|
this.permissions = new permission_service_1.PermissionService(this.httpClient, this.cacheService);
|
|
@@ -181,6 +181,15 @@ class MisoClient {
|
|
|
181
181
|
async logout(params) {
|
|
182
182
|
return this.auth.logout(params);
|
|
183
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* Refresh user access token using refresh token
|
|
186
|
+
* @param refreshToken - Refresh token to exchange for new access token
|
|
187
|
+
* @param authStrategy - Optional authentication strategy override
|
|
188
|
+
* @returns New access token, refresh token, and expiration info, or null on error
|
|
189
|
+
*/
|
|
190
|
+
async refreshToken(refreshToken, authStrategy) {
|
|
191
|
+
return this.auth.refreshToken(refreshToken, authStrategy);
|
|
192
|
+
}
|
|
184
193
|
// ==================== AUTHORIZATION METHODS ====================
|
|
185
194
|
/**
|
|
186
195
|
* Get user roles (cached in Redis if available)
|
|
@@ -355,6 +364,12 @@ var auth_service_2 = require("./services/auth.service");
|
|
|
355
364
|
Object.defineProperty(exports, "AuthService", { enumerable: true, get: function () { return auth_service_2.AuthService; } });
|
|
356
365
|
var role_service_2 = require("./services/role.service");
|
|
357
366
|
Object.defineProperty(exports, "RoleService", { enumerable: true, get: function () { return role_service_2.RoleService; } });
|
|
367
|
+
var permission_service_2 = require("./services/permission.service");
|
|
368
|
+
Object.defineProperty(exports, "PermissionService", { enumerable: true, get: function () { return permission_service_2.PermissionService; } });
|
|
369
|
+
var browser_permission_service_1 = require("./services/browser-permission.service");
|
|
370
|
+
Object.defineProperty(exports, "BrowserPermissionService", { enumerable: true, get: function () { return browser_permission_service_1.BrowserPermissionService; } });
|
|
371
|
+
var browser_role_service_1 = require("./services/browser-role.service");
|
|
372
|
+
Object.defineProperty(exports, "BrowserRoleService", { enumerable: true, get: function () { return browser_role_service_1.BrowserRoleService; } });
|
|
358
373
|
var logger_service_2 = require("./services/logger.service");
|
|
359
374
|
Object.defineProperty(exports, "LoggerService", { enumerable: true, get: function () { return logger_service_2.LoggerService; } });
|
|
360
375
|
var redis_service_2 = require("./services/redis.service");
|
|
@@ -375,6 +390,11 @@ Object.defineProperty(exports, "extractClientTokenInfo", { enumerable: true, get
|
|
|
375
390
|
var controller_url_resolver_1 = require("./utils/controller-url-resolver");
|
|
376
391
|
Object.defineProperty(exports, "resolveControllerUrl", { enumerable: true, get: function () { return controller_url_resolver_1.resolveControllerUrl; } });
|
|
377
392
|
Object.defineProperty(exports, "isBrowser", { enumerable: true, get: function () { return controller_url_resolver_1.isBrowser; } });
|
|
393
|
+
Object.defineProperty(exports, "validateUrl", { enumerable: true, get: function () { return controller_url_resolver_1.validateUrl; } });
|
|
394
|
+
var logging_helpers_1 = require("./utils/logging-helpers");
|
|
395
|
+
Object.defineProperty(exports, "extractLoggingContext", { enumerable: true, get: function () { return logging_helpers_1.extractLoggingContext; } });
|
|
396
|
+
var request_context_1 = require("./utils/request-context");
|
|
397
|
+
Object.defineProperty(exports, "extractRequestContext", { enumerable: true, get: function () { return request_context_1.extractRequestContext; } });
|
|
378
398
|
// Export pagination, filter, sort utilities
|
|
379
399
|
__exportStar(require("./utils/pagination.utils"), exports);
|
|
380
400
|
__exportStar(require("./utils/filter.utils"), exports);
|
|
@@ -402,8 +422,14 @@ Object.defineProperty(exports, "getErrorTypeUri", { enumerable: true, get: funct
|
|
|
402
422
|
Object.defineProperty(exports, "getErrorTitle", { enumerable: true, get: function () { return express_1.getErrorTitle; } });
|
|
403
423
|
Object.defineProperty(exports, "sendErrorResponse", { enumerable: true, get: function () { return express_1.sendErrorResponse; } });
|
|
404
424
|
Object.defineProperty(exports, "EncryptionUtil", { enumerable: true, get: function () { return express_1.EncryptionUtil; } });
|
|
425
|
+
Object.defineProperty(exports, "createClientTokenEndpoint", { enumerable: true, get: function () { return express_1.createClientTokenEndpoint; } });
|
|
426
|
+
Object.defineProperty(exports, "hasConfig", { enumerable: true, get: function () { return express_1.hasConfig; } });
|
|
405
427
|
// Export DataClient browser wrapper
|
|
406
428
|
var data_client_1 = require("./utils/data-client");
|
|
407
429
|
Object.defineProperty(exports, "DataClient", { enumerable: true, get: function () { return data_client_1.DataClient; } });
|
|
408
430
|
Object.defineProperty(exports, "dataClient", { enumerable: true, get: function () { return data_client_1.dataClient; } });
|
|
431
|
+
// Export DataClient auto-initialization helper
|
|
432
|
+
var data_client_auto_init_1 = require("./utils/data-client-auto-init");
|
|
433
|
+
Object.defineProperty(exports, "autoInitializeDataClient", { enumerable: true, get: function () { return data_client_auto_init_1.autoInitializeDataClient; } });
|
|
434
|
+
Object.defineProperty(exports, "getCachedDataClientConfig", { enumerable: true, get: function () { return data_client_auto_init_1.getCachedDataClientConfig; } });
|
|
409
435
|
//# sourceMappingURL=index.js.map
|