@aifabrix/miso-client 1.3.0 → 1.5.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.
- package/README.md +115 -0
- package/dist/examples/custom-sensitive-fields.example.d.ts +48 -0
- package/dist/examples/custom-sensitive-fields.example.d.ts.map +1 -0
- package/dist/examples/custom-sensitive-fields.example.js +31 -0
- package/dist/examples/custom-sensitive-fields.example.js.map +1 -0
- package/dist/src/index.d.ts +8 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +33 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/types/config.types.d.ts +1 -0
- package/dist/src/types/config.types.d.ts.map +1 -1
- package/dist/src/types/config.types.js.map +1 -1
- package/dist/src/types/errors.types.d.ts +30 -0
- package/dist/src/types/errors.types.d.ts.map +1 -0
- package/dist/src/types/errors.types.js +7 -0
- package/dist/src/types/errors.types.js.map +1 -0
- package/dist/src/types/filter.types.d.ts +66 -0
- package/dist/src/types/filter.types.d.ts.map +1 -0
- package/dist/src/types/filter.types.js +57 -0
- package/dist/src/types/filter.types.js.map +1 -0
- package/dist/src/types/pagination.types.d.ts +28 -0
- package/dist/src/types/pagination.types.d.ts.map +1 -0
- package/dist/src/types/pagination.types.js +7 -0
- package/dist/src/types/pagination.types.js.map +1 -0
- package/dist/src/types/sort.types.d.ts +14 -0
- package/dist/src/types/sort.types.d.ts.map +1 -0
- package/dist/src/types/sort.types.js +7 -0
- package/dist/src/types/sort.types.js.map +1 -0
- package/dist/src/utils/config-loader.d.ts.map +1 -1
- package/dist/src/utils/config-loader.js +4 -0
- package/dist/src/utils/config-loader.js.map +1 -1
- package/dist/src/utils/data-masker.d.ts +20 -1
- package/dist/src/utils/data-masker.d.ts.map +1 -1
- package/dist/src/utils/data-masker.js +53 -27
- package/dist/src/utils/data-masker.js.map +1 -1
- package/dist/src/utils/errors.d.ts +26 -0
- package/dist/src/utils/errors.d.ts.map +1 -1
- package/dist/src/utils/errors.js +100 -1
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/filter.utils.d.ts +27 -0
- package/dist/src/utils/filter.utils.d.ts.map +1 -0
- package/dist/src/utils/filter.utils.js +95 -0
- package/dist/src/utils/filter.utils.js.map +1 -0
- package/dist/src/utils/http-client.d.ts +39 -21
- package/dist/src/utils/http-client.d.ts.map +1 -1
- package/dist/src/utils/http-client.js +177 -269
- package/dist/src/utils/http-client.js.map +1 -1
- package/dist/src/utils/internal-http-client.d.ts +49 -0
- package/dist/src/utils/internal-http-client.d.ts.map +1 -0
- package/dist/src/utils/internal-http-client.js +333 -0
- package/dist/src/utils/internal-http-client.js.map +1 -0
- package/dist/src/utils/pagination.utils.d.ts +41 -0
- package/dist/src/utils/pagination.utils.d.ts.map +1 -0
- package/dist/src/utils/pagination.utils.js +57 -0
- package/dist/src/utils/pagination.utils.js.map +1 -0
- package/dist/src/utils/sensitive-fields.config.json +67 -0
- package/dist/src/utils/sensitive-fields.loader.d.ts +29 -0
- package/dist/src/utils/sensitive-fields.loader.d.ts.map +1 -0
- package/dist/src/utils/sensitive-fields.loader.js +246 -0
- package/dist/src/utils/sensitive-fields.loader.js.map +1 -0
- package/dist/src/utils/sort.utils.d.ts +19 -0
- package/dist/src/utils/sort.utils.d.ts.map +1 -0
- package/dist/src/utils/sort.utils.js +34 -0
- package/dist/src/utils/sort.utils.js.map +1 -0
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -48,6 +48,14 @@ The **AI Fabrix Miso Client SDK** provides authentication, authorization, and lo
|
|
|
48
48
|
- Forensic analysis support
|
|
49
49
|
- Compliance reporting automation
|
|
50
50
|
|
|
51
|
+
**HTTP Request Audit (ISO 27001 Compliant)**
|
|
52
|
+
- Automatic audit logging for all HTTP requests
|
|
53
|
+
- Sensitive data masking (passwords, tokens, PII, financial data)
|
|
54
|
+
- Configurable sensitive fields via JSON configuration
|
|
55
|
+
- Debug logging with automatic data protection
|
|
56
|
+
- Request/response metadata capture
|
|
57
|
+
- User context extraction from JWT tokens
|
|
58
|
+
|
|
51
59
|
### ⚡ Performance & Scalability
|
|
52
60
|
|
|
53
61
|
**Intelligent Caching**
|
|
@@ -290,6 +298,51 @@ await client.log.audit('access.denied', 'authorization', {
|
|
|
290
298
|
|
|
291
299
|
---
|
|
292
300
|
|
|
301
|
+
### Step 6.5: HTTP Request Audit (ISO 27001)
|
|
302
|
+
|
|
303
|
+
**What happens:** All HTTP requests are automatically audited with sensitive data masking for ISO 27001 compliance.
|
|
304
|
+
|
|
305
|
+
```typescript
|
|
306
|
+
import { MisoClient, loadConfig } from '@aifabrix/miso-client';
|
|
307
|
+
|
|
308
|
+
const client = new MisoClient(loadConfig());
|
|
309
|
+
await client.initialize();
|
|
310
|
+
|
|
311
|
+
// HTTP requests are automatically audited
|
|
312
|
+
// - All requests/responses are logged with masked sensitive data
|
|
313
|
+
// - User context is extracted from JWT tokens
|
|
314
|
+
// - Request/response metadata (duration, size, status codes) is captured
|
|
315
|
+
// - Sensitive fields (passwords, tokens, PII, financial data) are automatically masked
|
|
316
|
+
|
|
317
|
+
// No additional code needed - works automatically!
|
|
318
|
+
const user = await client.getUser(token);
|
|
319
|
+
// This HTTP request is automatically audited with ISO 27001 compliance
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
**Configuration (Optional):**
|
|
323
|
+
|
|
324
|
+
```bash
|
|
325
|
+
# Add to .env for custom sensitive fields configuration
|
|
326
|
+
MISO_SENSITIVE_FIELDS_CONFIG=/path/to/sensitive-fields.config.json
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
**What gets audited:**
|
|
330
|
+
- All HTTP requests to the controller
|
|
331
|
+
- Request/response metadata (method, URL, status, duration, size)
|
|
332
|
+
- User context (extracted from JWT tokens)
|
|
333
|
+
- Sensitive data is automatically masked (passwords, tokens, PII, credit cards, etc.)
|
|
334
|
+
|
|
335
|
+
**ISO 27001 Compliance:**
|
|
336
|
+
- Automatic sensitive data masking before logging
|
|
337
|
+
- Configurable sensitive field patterns
|
|
338
|
+
- Audit trail for all API communications
|
|
339
|
+
- Data protection controls enforced
|
|
340
|
+
|
|
341
|
+
→ [Custom sensitive fields example](examples/custom-sensitive-fields.example.ts)
|
|
342
|
+
→ [Sensitive fields config example](examples/sensitive-fields-config.example.json)
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
293
346
|
### Step 7: Encryption & Caching
|
|
294
347
|
|
|
295
348
|
**What happens:** Use encryption for sensitive data and generic caching for improved performance.
|
|
@@ -326,6 +379,66 @@ ENCRYPTION_KEY=your-32-byte-encryption-key
|
|
|
326
379
|
→ [API Reference](docs/api-reference.md#encryption-methods)
|
|
327
380
|
→ [Cache Methods](docs/api-reference.md#cache-methods)
|
|
328
381
|
|
|
382
|
+
---
|
|
383
|
+
|
|
384
|
+
### Step 8: Pagination, Filter, and Sort Utilities
|
|
385
|
+
|
|
386
|
+
**What happens:** Use reusable utilities for pagination, filtering, and sorting following enterprise application best practices and industry standards (ISO 27001 compliant).
|
|
387
|
+
|
|
388
|
+
```typescript
|
|
389
|
+
import {
|
|
390
|
+
FilterBuilder,
|
|
391
|
+
parse_pagination_params,
|
|
392
|
+
parse_sort_params,
|
|
393
|
+
build_query_string,
|
|
394
|
+
create_paginated_list_response
|
|
395
|
+
} from '@aifabrix/miso-client';
|
|
396
|
+
|
|
397
|
+
const client = new MisoClient(loadConfig());
|
|
398
|
+
await client.initialize();
|
|
399
|
+
|
|
400
|
+
// Dynamic filter building (FilterBuilder)
|
|
401
|
+
const filterBuilder = new FilterBuilder()
|
|
402
|
+
.add('status', 'eq', 'active')
|
|
403
|
+
.add('region', 'in', ['eu', 'us'])
|
|
404
|
+
.add('created_at', 'gte', '2024-01-01');
|
|
405
|
+
|
|
406
|
+
const queryString = filterBuilder.toQueryString();
|
|
407
|
+
// Returns: "filter=status:eq:active&filter=region:in:eu,us&filter=created_at:gte:2024-01-01"
|
|
408
|
+
|
|
409
|
+
// Parse pagination from query string
|
|
410
|
+
const { current_page, page_size } = parse_pagination_params({ page: '1', page_size: '25' });
|
|
411
|
+
|
|
412
|
+
// Parse sort from query string
|
|
413
|
+
const sortOptions = parse_sort_params({ sort: '-updated_at' });
|
|
414
|
+
|
|
415
|
+
// Build complete query
|
|
416
|
+
const completeQuery = build_query_string({
|
|
417
|
+
filters: filterBuilder.build(),
|
|
418
|
+
sort: ['-updated_at'],
|
|
419
|
+
page: current_page,
|
|
420
|
+
page_size: page_size
|
|
421
|
+
});
|
|
422
|
+
|
|
423
|
+
// Create paginated response
|
|
424
|
+
const response = create_paginated_list_response(
|
|
425
|
+
items,
|
|
426
|
+
120, // total_items
|
|
427
|
+
1, // current_page
|
|
428
|
+
25, // page_size
|
|
429
|
+
'application' // type
|
|
430
|
+
);
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
**Note:** All utilities use **snake_case** naming conventions following enterprise application standards (`current_page`, `page_size`, `status_code`, etc.), ensuring consistency and ISO 27001 compliance.
|
|
434
|
+
|
|
435
|
+
**Pro tip:** These utilities are business-logic-free and reusable across applications. Perfect for building query strings, parsing API responses, and testing with mocks. Designed following enterprise best practices for maintainability and compliance.
|
|
436
|
+
|
|
437
|
+
→ [Complete pagination example](docs/examples.md#pagination)
|
|
438
|
+
→ [Complete filter example](docs/examples.md#filtering)
|
|
439
|
+
→ [Complete sort example](docs/examples.md#sorting)
|
|
440
|
+
→ [API Reference](docs/api-reference.md#pagination-utilities)
|
|
441
|
+
|
|
329
442
|
|
|
330
443
|
---
|
|
331
444
|
|
|
@@ -339,6 +452,7 @@ interface MisoClientConfig {
|
|
|
339
452
|
redis?: RedisConfig; // Optional: For caching
|
|
340
453
|
logLevel?: 'debug' | 'info' | 'warn' | 'error';
|
|
341
454
|
encryptionKey?: string; // Optional: Encryption key (or use ENCRYPTION_KEY env var)
|
|
455
|
+
sensitiveFieldsConfig?: string; // Optional: Path to ISO 27001 sensitive fields config JSON
|
|
342
456
|
cache?: {
|
|
343
457
|
roleTTL?: number; // Role cache TTL (default: 900s)
|
|
344
458
|
permissionTTL?: number; // Permission cache TTL (default: 900s)
|
|
@@ -447,6 +561,7 @@ MISO_CONTROLLER_URL=http://localhost:3000
|
|
|
447
561
|
REDIS_HOST=localhost
|
|
448
562
|
REDIS_PORT=6379
|
|
449
563
|
MISO_LOG_LEVEL=info
|
|
564
|
+
MISO_SENSITIVE_FIELDS_CONFIG=/path/to/sensitive-fields.config.json # Optional: ISO 27001 config
|
|
450
565
|
```
|
|
451
566
|
|
|
452
567
|
---
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example: Custom Sensitive Fields Configuration
|
|
3
|
+
*
|
|
4
|
+
* This example shows how to use a custom sensitive fields configuration file
|
|
5
|
+
* to extend the default ISO 27001 compliant sensitive fields.
|
|
6
|
+
*/
|
|
7
|
+
declare function example(): Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* Custom Sensitive Fields Configuration File Structure
|
|
10
|
+
*
|
|
11
|
+
* Create a JSON file with the following structure:
|
|
12
|
+
*
|
|
13
|
+
* {
|
|
14
|
+
* "version": "1.0.0",
|
|
15
|
+
* "description": "Your custom sensitive fields configuration",
|
|
16
|
+
* "categories": {
|
|
17
|
+
* "authentication": [
|
|
18
|
+
* "password",
|
|
19
|
+
* "token",
|
|
20
|
+
* // ... add your custom authentication fields
|
|
21
|
+
* ],
|
|
22
|
+
* "pii": [
|
|
23
|
+
* "email",
|
|
24
|
+
* "ssn",
|
|
25
|
+
* // ... add your custom PII fields
|
|
26
|
+
* ],
|
|
27
|
+
* "financial": [
|
|
28
|
+
* "creditCard",
|
|
29
|
+
* // ... add your custom financial fields
|
|
30
|
+
* ],
|
|
31
|
+
* "security": [
|
|
32
|
+
* "privateKey",
|
|
33
|
+
* // ... add your custom security fields
|
|
34
|
+
* ]
|
|
35
|
+
* },
|
|
36
|
+
* "fieldPatterns": [
|
|
37
|
+
* "password",
|
|
38
|
+
* "secret",
|
|
39
|
+
* // ... add patterns that match sensitive fields
|
|
40
|
+
* ]
|
|
41
|
+
* }
|
|
42
|
+
*
|
|
43
|
+
* Note: Your custom fields will be merged with the default fields.
|
|
44
|
+
* This means you can extend the default configuration without losing
|
|
45
|
+
* the built-in ISO 27001 compliant fields.
|
|
46
|
+
*/
|
|
47
|
+
export { example };
|
|
48
|
+
//# sourceMappingURL=custom-sensitive-fields.example.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-sensitive-fields.example.d.ts","sourceRoot":"","sources":["../../examples/custom-sensitive-fields.example.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,iBAAe,OAAO,kBA0BrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Example: Custom Sensitive Fields Configuration
|
|
4
|
+
*
|
|
5
|
+
* This example shows how to use a custom sensitive fields configuration file
|
|
6
|
+
* to extend the default ISO 27001 compliant sensitive fields.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.example = example;
|
|
10
|
+
const index_1 = require("../src/index");
|
|
11
|
+
async function example() {
|
|
12
|
+
// Option 1: Use environment variable
|
|
13
|
+
// Set MISO_SENSITIVE_FIELDS_CONFIG=/path/to/custom-sensitive-fields.json in .env
|
|
14
|
+
process.env.MISO_SENSITIVE_FIELDS_CONFIG = './custom-sensitive-fields.json';
|
|
15
|
+
// Option 2: Pass in config directly
|
|
16
|
+
const config = {
|
|
17
|
+
...(0, index_1.loadConfig)(),
|
|
18
|
+
sensitiveFieldsConfig: './custom-sensitive-fields.json' // Path to your custom config
|
|
19
|
+
};
|
|
20
|
+
const client = new index_1.MisoClient(config);
|
|
21
|
+
await client.initialize();
|
|
22
|
+
// Now all HTTP requests will use your custom sensitive fields configuration
|
|
23
|
+
// for masking sensitive data in audit and debug logs
|
|
24
|
+
const token = 'your-jwt-token-here';
|
|
25
|
+
// This request will be automatically audited and debug logged (if logLevel === 'debug')
|
|
26
|
+
// All sensitive data will be masked using your custom configuration
|
|
27
|
+
const user = await client.getUser(token);
|
|
28
|
+
console.log('User:', user);
|
|
29
|
+
await client.disconnect();
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=custom-sensitive-fields.example.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-sensitive-fields.example.js","sourceRoot":"","sources":["../../examples/custom-sensitive-fields.example.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAwEM,0BAAO;AAtEhB,wCAAsD;AAEtD,KAAK,UAAU,OAAO;IACpB,qCAAqC;IACrC,iFAAiF;IACjF,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,gCAAgC,CAAC;IAE5E,oCAAoC;IACpC,MAAM,MAAM,GAAG;QACb,GAAG,IAAA,kBAAU,GAAE;QACf,qBAAqB,EAAE,gCAAgC,CAAC,6BAA6B;KACtF,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,kBAAU,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAE1B,4EAA4E;IAC5E,qDAAqD;IAErD,MAAM,KAAK,GAAG,qBAAqB,CAAC;IAEpC,wFAAwF;IACxF,oEAAoE;IACpE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAEzC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAE3B,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;AAC5B,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -135,6 +135,10 @@ export declare class MisoClient {
|
|
|
135
135
|
isRedisConnected(): boolean;
|
|
136
136
|
}
|
|
137
137
|
export * from './types/config.types';
|
|
138
|
+
export * from './types/pagination.types';
|
|
139
|
+
export * from './types/filter.types';
|
|
140
|
+
export * from './types/sort.types';
|
|
141
|
+
export type { ErrorResponse as ErrorResponseSnakeCase, ErrorEnvelope } from './types/errors.types';
|
|
138
142
|
export { AuthService } from './services/auth.service';
|
|
139
143
|
export { RoleService } from './services/role.service';
|
|
140
144
|
export { LoggerService } from './services/logger.service';
|
|
@@ -143,5 +147,8 @@ export { EncryptionService } from './services/encryption.service';
|
|
|
143
147
|
export { CacheService } from './services/cache.service';
|
|
144
148
|
export { HttpClient } from './utils/http-client';
|
|
145
149
|
export { loadConfig } from './utils/config-loader';
|
|
146
|
-
export
|
|
150
|
+
export * from './utils/pagination.utils';
|
|
151
|
+
export * from './utils/filter.utils';
|
|
152
|
+
export * from './utils/sort.utils';
|
|
153
|
+
export { MisoClientError, ApiErrorException, transform_error_to_snake_case, handle_api_error_snake_case } from './utils/errors';
|
|
147
154
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/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,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/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.MisoClientError = exports.loadConfig = exports.HttpClient = exports.CacheService = exports.EncryptionService = exports.RedisService = exports.LoggerService = exports.RoleService = exports.AuthService = exports.MisoClient = void 0;
|
|
20
|
+
exports.handle_api_error_snake_case = exports.transform_error_to_snake_case = exports.ApiErrorException = exports.MisoClientError = exports.loadConfig = exports.HttpClient = exports.CacheService = exports.EncryptionService = exports.RedisService = exports.LoggerService = 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");
|
|
@@ -26,14 +26,32 @@ const redis_service_1 = require("./services/redis.service");
|
|
|
26
26
|
const encryption_service_1 = require("./services/encryption.service");
|
|
27
27
|
const cache_service_1 = require("./services/cache.service");
|
|
28
28
|
const http_client_1 = require("./utils/http-client");
|
|
29
|
+
const internal_http_client_1 = require("./utils/internal-http-client");
|
|
30
|
+
const data_masker_1 = require("./utils/data-masker");
|
|
29
31
|
class MisoClient {
|
|
30
32
|
constructor(config) {
|
|
31
33
|
this.initialized = false;
|
|
32
34
|
this.config = config;
|
|
33
|
-
|
|
35
|
+
// Initialize DataMasker with custom config path if provided
|
|
36
|
+
if (config.sensitiveFieldsConfig) {
|
|
37
|
+
data_masker_1.DataMasker.setConfigPath(config.sensitiveFieldsConfig);
|
|
38
|
+
}
|
|
39
|
+
// Create InternalHttpClient first (base HTTP functionality)
|
|
40
|
+
const internalClient = new internal_http_client_1.InternalHttpClient(config);
|
|
41
|
+
// Create Redis service
|
|
34
42
|
this.redis = new redis_service_1.RedisService(config.redis);
|
|
43
|
+
// Create LoggerService with InternalHttpClient first (needs httpClient.request() and httpClient.config)
|
|
44
|
+
// InternalHttpClient has these methods, so we can use it directly
|
|
45
|
+
// Type assertion needed because InternalHttpClient has compatible interface with HttpClient
|
|
46
|
+
this.logger = new logger_service_1.LoggerService(internalClient, this.redis);
|
|
47
|
+
// Create public HttpClient that wraps InternalHttpClient with logger
|
|
48
|
+
this.httpClient = new http_client_1.HttpClient(config, this.logger);
|
|
49
|
+
// Update LoggerService to use the new public HttpClient (for logging)
|
|
50
|
+
// Type assertion needed because httpClient property is private in LoggerService but needs to be updated
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
52
|
+
this.logger.httpClient = this.httpClient;
|
|
53
|
+
// Create services
|
|
35
54
|
this.auth = new auth_service_1.AuthService(this.httpClient, this.redis);
|
|
36
|
-
this.logger = new logger_service_1.LoggerService(this.httpClient, this.redis);
|
|
37
55
|
// Initialize cache service with Redis support (used by roles and permissions)
|
|
38
56
|
this.cacheService = new cache_service_1.CacheService(this.redis);
|
|
39
57
|
// Initialize services that use cache
|
|
@@ -246,6 +264,10 @@ class MisoClient {
|
|
|
246
264
|
exports.MisoClient = MisoClient;
|
|
247
265
|
// Export types
|
|
248
266
|
__exportStar(require("./types/config.types"), exports);
|
|
267
|
+
// Export pagination, filter, sort types
|
|
268
|
+
__exportStar(require("./types/pagination.types"), exports);
|
|
269
|
+
__exportStar(require("./types/filter.types"), exports);
|
|
270
|
+
__exportStar(require("./types/sort.types"), exports);
|
|
249
271
|
// Export services for advanced usage
|
|
250
272
|
var auth_service_2 = require("./services/auth.service");
|
|
251
273
|
Object.defineProperty(exports, "AuthService", { enumerable: true, get: function () { return auth_service_2.AuthService; } });
|
|
@@ -264,7 +286,14 @@ Object.defineProperty(exports, "HttpClient", { enumerable: true, get: function (
|
|
|
264
286
|
// Export utilities
|
|
265
287
|
var config_loader_1 = require("./utils/config-loader");
|
|
266
288
|
Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return config_loader_1.loadConfig; } });
|
|
267
|
-
// Export
|
|
289
|
+
// Export pagination, filter, sort utilities
|
|
290
|
+
__exportStar(require("./utils/pagination.utils"), exports);
|
|
291
|
+
__exportStar(require("./utils/filter.utils"), exports);
|
|
292
|
+
__exportStar(require("./utils/sort.utils"), exports);
|
|
293
|
+
// Export error classes and utilities
|
|
268
294
|
var errors_1 = require("./utils/errors");
|
|
269
295
|
Object.defineProperty(exports, "MisoClientError", { enumerable: true, get: function () { return errors_1.MisoClientError; } });
|
|
296
|
+
Object.defineProperty(exports, "ApiErrorException", { enumerable: true, get: function () { return errors_1.ApiErrorException; } });
|
|
297
|
+
Object.defineProperty(exports, "transform_error_to_snake_case", { enumerable: true, get: function () { return errors_1.transform_error_to_snake_case; } });
|
|
298
|
+
Object.defineProperty(exports, "handle_api_error_snake_case", { enumerable: true, get: function () { return errors_1.handle_api_error_snake_case; } });
|
|
270
299
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,0DAAsD;AACtD,0DAAsD;AACtD,sEAAkE;AAClE,8DAA0D;AAC1D,4DAAwD;AACxD,sEAAkE;AAClE,4DAAwD;AACxD,qDAAiD;AAGjD,MAAa,UAAU;IAYrB,YAAY,MAAwB;QAF5B,gBAAW,GAAG,KAAK,CAAC;QAG1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../../src/types/config.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAE/B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IAGrB,KAAK,CAAC,EAAE,WAAW,CAAC;IAGpB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAG/C,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../../src/types/config.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.types.js","sourceRoot":"","sources":["../../../src/types/config.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"config.types.js","sourceRoot":"","sources":["../../../src/types/config.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;AA8GH,0CA4BC;AAhCD;;;GAGG;AACH,SAAgB,eAAe,CAAC,IAAa;IAC3C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,IAA+B,CAAC;IAE5C,wBAAwB;IACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;QAChF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAClE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uDAAuD;IACvD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,WAAW,CAAC;IACrD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uBAAuB;IACvB,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error types for Miso/Dataplane API responses
|
|
3
|
+
* All keys follow snake_case to match Miso/Dataplane schema
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Canonical error response for AIFabrix Miso APIs (snake_case).
|
|
7
|
+
* Follows RFC 7807-style structured error format.
|
|
8
|
+
*/
|
|
9
|
+
export interface ErrorResponse {
|
|
10
|
+
/** Human-readable list of error messages. */
|
|
11
|
+
errors: string[];
|
|
12
|
+
/** RFC 7807 type URI. */
|
|
13
|
+
type?: string;
|
|
14
|
+
/** Short, human-readable title. */
|
|
15
|
+
title?: string;
|
|
16
|
+
/** HTTP status code. */
|
|
17
|
+
status_code: number;
|
|
18
|
+
/** URI/path identifying the error instance. */
|
|
19
|
+
instance?: string;
|
|
20
|
+
/** Request correlation key for debugging/audit. */
|
|
21
|
+
request_key?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Top-level error envelope.
|
|
25
|
+
*/
|
|
26
|
+
export interface ErrorEnvelope {
|
|
27
|
+
/** Error response object. */
|
|
28
|
+
error: ErrorResponse;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=errors.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.types.d.ts","sourceRoot":"","sources":["../../../src/types/errors.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IAEpB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,6BAA6B;IAC7B,KAAK,EAAE,aAAa,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.types.js","sourceRoot":"","sources":["../../../src/types/errors.types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filter types for Miso/Dataplane API query parameters
|
|
3
|
+
* All keys follow snake_case to match Miso/Dataplane schema
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Filter operators supported by the API.
|
|
7
|
+
*/
|
|
8
|
+
export type FilterOperator = 'eq' | 'neq' | 'in' | 'nin' | 'gt' | 'lt' | 'gte' | 'lte' | 'contains' | 'like';
|
|
9
|
+
/**
|
|
10
|
+
* Single filter option with field, operator, and value.
|
|
11
|
+
*/
|
|
12
|
+
export interface FilterOption {
|
|
13
|
+
/** Field name to filter on. */
|
|
14
|
+
field: string;
|
|
15
|
+
/** Filter operator. */
|
|
16
|
+
op: FilterOperator;
|
|
17
|
+
/** Filter value (supports arrays for `in` and `nin` operators). */
|
|
18
|
+
value: string | number | boolean | Array<string | number>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Complete filter query including filters, sorting, pagination, and field selection.
|
|
22
|
+
*/
|
|
23
|
+
export interface FilterQuery {
|
|
24
|
+
/** Array of filter options. */
|
|
25
|
+
filters?: FilterOption[];
|
|
26
|
+
/** Array of sort fields (e.g., `['-updated_at', 'name']` where `-` prefix means descending). */
|
|
27
|
+
sort?: string[];
|
|
28
|
+
/** Page number (1-based). */
|
|
29
|
+
page?: number;
|
|
30
|
+
/** Number of items per page. */
|
|
31
|
+
page_size?: number;
|
|
32
|
+
/** Array of field names to include in response (field projection). */
|
|
33
|
+
fields?: string[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Builder class for dynamic filter construction.
|
|
37
|
+
* Supports fluent API for building complex filter queries.
|
|
38
|
+
*/
|
|
39
|
+
export declare class FilterBuilder {
|
|
40
|
+
private filters;
|
|
41
|
+
/**
|
|
42
|
+
* Add a single filter to the builder.
|
|
43
|
+
* @param field - Field name to filter on
|
|
44
|
+
* @param op - Filter operator
|
|
45
|
+
* @param value - Filter value (supports arrays for `in` and `nin`)
|
|
46
|
+
* @returns FilterBuilder instance for method chaining
|
|
47
|
+
*/
|
|
48
|
+
add(field: string, op: FilterOperator, value: string | number | boolean | Array<string | number>): FilterBuilder;
|
|
49
|
+
/**
|
|
50
|
+
* Add multiple filters at once.
|
|
51
|
+
* @param filters - Array of filter options to add
|
|
52
|
+
* @returns FilterBuilder instance for method chaining
|
|
53
|
+
*/
|
|
54
|
+
addMany(filters: FilterOption[]): FilterBuilder;
|
|
55
|
+
/**
|
|
56
|
+
* Build and return the filter array.
|
|
57
|
+
* @returns Array of filter options
|
|
58
|
+
*/
|
|
59
|
+
build(): FilterOption[];
|
|
60
|
+
/**
|
|
61
|
+
* Convert filters to query string format.
|
|
62
|
+
* @returns Query string with filter parameters (e.g., `?filter=field:op:value&filter=...`)
|
|
63
|
+
*/
|
|
64
|
+
toQueryString(): string;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=filter.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.types.d.ts","sourceRoot":"","sources":["../../../src/types/filter.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,KAAK,GACL,UAAU,GACV,MAAM,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IAEd,uBAAuB;IACvB,EAAE,EAAE,cAAc,CAAC;IAEnB,mEAAmE;IACnE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CAC3D;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IAEzB,gGAAgG;IAChG,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAsB;IAErC;;;;;;OAMG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,aAAa;IAKhH;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,aAAa;IAK/C;;;OAGG;IACH,KAAK,IAAI,YAAY,EAAE;IAIvB;;;OAGG;IACH,aAAa,IAAI,MAAM;CAQxB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Filter types for Miso/Dataplane API query parameters
|
|
4
|
+
* All keys follow snake_case to match Miso/Dataplane schema
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.FilterBuilder = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Builder class for dynamic filter construction.
|
|
10
|
+
* Supports fluent API for building complex filter queries.
|
|
11
|
+
*/
|
|
12
|
+
class FilterBuilder {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.filters = [];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Add a single filter to the builder.
|
|
18
|
+
* @param field - Field name to filter on
|
|
19
|
+
* @param op - Filter operator
|
|
20
|
+
* @param value - Filter value (supports arrays for `in` and `nin`)
|
|
21
|
+
* @returns FilterBuilder instance for method chaining
|
|
22
|
+
*/
|
|
23
|
+
add(field, op, value) {
|
|
24
|
+
this.filters.push({ field, op, value });
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Add multiple filters at once.
|
|
29
|
+
* @param filters - Array of filter options to add
|
|
30
|
+
* @returns FilterBuilder instance for method chaining
|
|
31
|
+
*/
|
|
32
|
+
addMany(filters) {
|
|
33
|
+
this.filters.push(...filters);
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Build and return the filter array.
|
|
38
|
+
* @returns Array of filter options
|
|
39
|
+
*/
|
|
40
|
+
build() {
|
|
41
|
+
return [...this.filters];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Convert filters to query string format.
|
|
45
|
+
* @returns Query string with filter parameters (e.g., `?filter=field:op:value&filter=...`)
|
|
46
|
+
*/
|
|
47
|
+
toQueryString() {
|
|
48
|
+
const params = new URLSearchParams();
|
|
49
|
+
this.filters.forEach((f) => {
|
|
50
|
+
const val = Array.isArray(f.value) ? f.value.join(',') : String(f.value);
|
|
51
|
+
params.append('filter', `${f.field}:${f.op}:${val}`);
|
|
52
|
+
});
|
|
53
|
+
return params.toString();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.FilterBuilder = FilterBuilder;
|
|
57
|
+
//# sourceMappingURL=filter.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.types.js","sourceRoot":"","sources":["../../../src/types/filter.types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAmDH;;;GAGG;AACH,MAAa,aAAa;IAA1B;QACU,YAAO,GAAmB,EAAE,CAAC;IA4CvC,CAAC;IA1CC;;;;;;OAMG;IACH,GAAG,CAAC,KAAa,EAAE,EAAkB,EAAE,KAAyD;QAC9F,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,OAAuB;QAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACzB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACzE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACF;AA7CD,sCA6CC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pagination types for Miso/Dataplane API responses
|
|
3
|
+
* All keys follow snake_case to match Miso/Dataplane schema
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Meta information returned in paginated API responses.
|
|
7
|
+
* All keys follow snake_case to match Miso/Dataplane schema.
|
|
8
|
+
*/
|
|
9
|
+
export interface Meta {
|
|
10
|
+
/** Total number of items available in full dataset. */
|
|
11
|
+
total_items: number;
|
|
12
|
+
/** Current page index (1-based). Maps from `page` query parameter. */
|
|
13
|
+
current_page: number;
|
|
14
|
+
/** Number of items per page. Maps from `page_size` query parameter. */
|
|
15
|
+
page_size: number;
|
|
16
|
+
/** Logical resource type (e.g. "application", "environment"). */
|
|
17
|
+
type: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Standard paginated list response envelope.
|
|
21
|
+
*/
|
|
22
|
+
export interface PaginatedListResponse<T> {
|
|
23
|
+
/** Pagination metadata. */
|
|
24
|
+
meta: Meta;
|
|
25
|
+
/** Array of items for the current page. */
|
|
26
|
+
data: T[];
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=pagination.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.types.d.ts","sourceRoot":"","sources":["../../../src/types/pagination.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,WAAW,IAAI;IACnB,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IAEpB,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC;IAErB,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;IAElB,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,2BAA2B;IAC3B,IAAI,EAAE,IAAI,CAAC;IAEX,2CAA2C;IAC3C,IAAI,EAAE,CAAC,EAAE,CAAC;CACX"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.types.js","sourceRoot":"","sources":["../../../src/types/pagination.types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sort types for Miso/Dataplane API query parameters
|
|
3
|
+
* All keys follow snake_case to match Miso/Dataplane schema
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Sort option specifying field and order.
|
|
7
|
+
*/
|
|
8
|
+
export interface SortOption {
|
|
9
|
+
/** Field name to sort by. */
|
|
10
|
+
field: string;
|
|
11
|
+
/** Sort order: ascending or descending. */
|
|
12
|
+
order: 'asc' | 'desc';
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=sort.types.d.ts.map
|