@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.
Files changed (65) hide show
  1. package/README.md +115 -0
  2. package/dist/examples/custom-sensitive-fields.example.d.ts +48 -0
  3. package/dist/examples/custom-sensitive-fields.example.d.ts.map +1 -0
  4. package/dist/examples/custom-sensitive-fields.example.js +31 -0
  5. package/dist/examples/custom-sensitive-fields.example.js.map +1 -0
  6. package/dist/src/index.d.ts +8 -1
  7. package/dist/src/index.d.ts.map +1 -1
  8. package/dist/src/index.js +33 -4
  9. package/dist/src/index.js.map +1 -1
  10. package/dist/src/types/config.types.d.ts +1 -0
  11. package/dist/src/types/config.types.d.ts.map +1 -1
  12. package/dist/src/types/config.types.js.map +1 -1
  13. package/dist/src/types/errors.types.d.ts +30 -0
  14. package/dist/src/types/errors.types.d.ts.map +1 -0
  15. package/dist/src/types/errors.types.js +7 -0
  16. package/dist/src/types/errors.types.js.map +1 -0
  17. package/dist/src/types/filter.types.d.ts +66 -0
  18. package/dist/src/types/filter.types.d.ts.map +1 -0
  19. package/dist/src/types/filter.types.js +57 -0
  20. package/dist/src/types/filter.types.js.map +1 -0
  21. package/dist/src/types/pagination.types.d.ts +28 -0
  22. package/dist/src/types/pagination.types.d.ts.map +1 -0
  23. package/dist/src/types/pagination.types.js +7 -0
  24. package/dist/src/types/pagination.types.js.map +1 -0
  25. package/dist/src/types/sort.types.d.ts +14 -0
  26. package/dist/src/types/sort.types.d.ts.map +1 -0
  27. package/dist/src/types/sort.types.js +7 -0
  28. package/dist/src/types/sort.types.js.map +1 -0
  29. package/dist/src/utils/config-loader.d.ts.map +1 -1
  30. package/dist/src/utils/config-loader.js +4 -0
  31. package/dist/src/utils/config-loader.js.map +1 -1
  32. package/dist/src/utils/data-masker.d.ts +20 -1
  33. package/dist/src/utils/data-masker.d.ts.map +1 -1
  34. package/dist/src/utils/data-masker.js +53 -27
  35. package/dist/src/utils/data-masker.js.map +1 -1
  36. package/dist/src/utils/errors.d.ts +26 -0
  37. package/dist/src/utils/errors.d.ts.map +1 -1
  38. package/dist/src/utils/errors.js +100 -1
  39. package/dist/src/utils/errors.js.map +1 -1
  40. package/dist/src/utils/filter.utils.d.ts +27 -0
  41. package/dist/src/utils/filter.utils.d.ts.map +1 -0
  42. package/dist/src/utils/filter.utils.js +95 -0
  43. package/dist/src/utils/filter.utils.js.map +1 -0
  44. package/dist/src/utils/http-client.d.ts +39 -21
  45. package/dist/src/utils/http-client.d.ts.map +1 -1
  46. package/dist/src/utils/http-client.js +177 -269
  47. package/dist/src/utils/http-client.js.map +1 -1
  48. package/dist/src/utils/internal-http-client.d.ts +49 -0
  49. package/dist/src/utils/internal-http-client.d.ts.map +1 -0
  50. package/dist/src/utils/internal-http-client.js +333 -0
  51. package/dist/src/utils/internal-http-client.js.map +1 -0
  52. package/dist/src/utils/pagination.utils.d.ts +41 -0
  53. package/dist/src/utils/pagination.utils.d.ts.map +1 -0
  54. package/dist/src/utils/pagination.utils.js +57 -0
  55. package/dist/src/utils/pagination.utils.js.map +1 -0
  56. package/dist/src/utils/sensitive-fields.config.json +67 -0
  57. package/dist/src/utils/sensitive-fields.loader.d.ts +29 -0
  58. package/dist/src/utils/sensitive-fields.loader.d.ts.map +1 -0
  59. package/dist/src/utils/sensitive-fields.loader.js +246 -0
  60. package/dist/src/utils/sensitive-fields.loader.js.map +1 -0
  61. package/dist/src/utils/sort.utils.d.ts +19 -0
  62. package/dist/src/utils/sort.utils.d.ts.map +1 -0
  63. package/dist/src/utils/sort.utils.js +34 -0
  64. package/dist/src/utils/sort.utils.js.map +1 -0
  65. package/package.json +5 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort.types.d.ts","sourceRoot":"","sources":["../../../src/types/sort.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IAEd,2CAA2C;IAC3C,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;CACvB"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Sort 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
+ //# sourceMappingURL=sort.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort.types.js","sourceRoot":"","sources":["../../../src/types/sort.types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAe,MAAM,uBAAuB,CAAC;AAEtE;;GAEG;AACH,wBAAgB,UAAU,IAAI,gBAAgB,CA+C7C"}
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAe,MAAM,uBAAuB,CAAC;AAEtE;;GAEG;AACH,wBAAgB,UAAU,IAAI,gBAAgB,CAoD7C"}
@@ -47,6 +47,10 @@ function loadConfig() {
47
47
  if (process.env.API_KEY) {
48
48
  config.apiKey = process.env.API_KEY;
49
49
  }
50
+ // Optional sensitive fields configuration file path
51
+ if (process.env.MISO_SENSITIVE_FIELDS_CONFIG) {
52
+ config.sensitiveFieldsConfig = process.env.MISO_SENSITIVE_FIELDS_CONFIG;
53
+ }
50
54
  return config;
51
55
  }
52
56
  //# sourceMappingURL=config-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../../src/utils/config-loader.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAQH,gCA+CC;AArDD,yBAAuB;AAGvB;;GAEG;AACH,SAAgB,UAAU;IACxB,MAAM,MAAM,GAAqB;QAC/B,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,gCAAgC;QAClF,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;QACvE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE;QACnF,QAAQ,EAAG,OAAO,CAAC,GAAG,CAAC,cAAsD,IAAI,OAAO;KACzF,CAAC;IAEF,2BAA2B;IAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,+BAA+B;IAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACzC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,WAAW,GAAgB;YAC/B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC;YAChD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;SACrC,CAAC;QAEF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACzB,WAAW,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACjC,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACvD,CAAC;QAED,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;IAC7B,CAAC;IAED,0BAA0B;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/B,MAAM,CAAC,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACpD,CAAC;IAED,gEAAgE;IAChE,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IACtC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../../src/utils/config-loader.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAQH,gCAoDC;AA1DD,yBAAuB;AAGvB;;GAEG;AACH,SAAgB,UAAU;IACxB,MAAM,MAAM,GAAqB;QAC/B,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,gCAAgC;QAClF,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;QACvE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE;QACnF,QAAQ,EAAG,OAAO,CAAC,GAAG,CAAC,cAAsD,IAAI,OAAO;KACzF,CAAC;IAEF,2BAA2B;IAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,+BAA+B;IAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACzC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,WAAW,GAAgB;YAC/B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC;YAChD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;SACrC,CAAC;QAEF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACzB,WAAW,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACjC,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACvD,CAAC;QAED,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;IAC7B,CAAC;IAED,0BAA0B;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/B,MAAM,CAAC,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACpD,CAAC;IAED,gEAAgE;IAChE,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IACtC,CAAC;IAED,oDAAoD;IACpD,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;QAC7C,MAAM,CAAC,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;IAC1E,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -4,7 +4,26 @@
4
4
  */
5
5
  export declare class DataMasker {
6
6
  private static readonly MASKED_VALUE;
7
- private static readonly sensitiveFields;
7
+ private static cachedFields;
8
+ private static cachedFieldPatterns;
9
+ private static configPath;
10
+ /**
11
+ * Initialize sensitive fields from JSON configuration
12
+ * Loads configuration on first use and caches it
13
+ */
14
+ private static initializeSensitiveFields;
15
+ /**
16
+ * Get sensitive fields set (lazy loaded from JSON config)
17
+ */
18
+ private static getSensitiveFields;
19
+ /**
20
+ * Get field patterns (lazy loaded from JSON config)
21
+ */
22
+ private static getFieldPatterns;
23
+ /**
24
+ * Set custom configuration path (call before first use if needed)
25
+ */
26
+ static setConfigPath(customPath: string): void;
8
27
  /**
9
28
  * Check if a field name indicates sensitive data
10
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"data-masker.d.ts","sourceRoot":"","sources":["../../../src/utils/data-masker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAkB;IAEtD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAsBpC;IAEH;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAkB7C;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAkChD;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,MAAU,EAAE,QAAQ,GAAE,MAAU,GAAG,MAAM;IAYpF;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;CAsBrD"}
1
+ {"version":3,"file":"data-masker.d.ts","sourceRoot":"","sources":["../../../src/utils/data-masker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAkB;IACtD,OAAO,CAAC,MAAM,CAAC,YAAY,CAA4B;IACvD,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAyB;IAC3D,OAAO,CAAC,MAAM,CAAC,UAAU,CAAiC;IAE1D;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAoBxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAIjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAO/B;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAM9C;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAoB7C;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAkChD;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,MAAU,EAAE,QAAQ,GAAE,MAAU,GAAG,MAAM;IAYpF;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;CAsBrD"}
@@ -5,19 +5,65 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.DataMasker = void 0;
8
+ const sensitive_fields_loader_1 = require("./sensitive-fields.loader");
8
9
  class DataMasker {
10
+ /**
11
+ * Initialize sensitive fields from JSON configuration
12
+ * Loads configuration on first use and caches it
13
+ */
14
+ static initializeSensitiveFields(customPath) {
15
+ // If config path changed, reload
16
+ if (this.configPath !== customPath) {
17
+ this.cachedFields = null;
18
+ this.cachedFieldPatterns = null;
19
+ this.configPath = customPath;
20
+ }
21
+ // Return cached if available
22
+ if (this.cachedFields) {
23
+ return this.cachedFields;
24
+ }
25
+ // Load from JSON config (with fallback to defaults)
26
+ this.cachedFields = (0, sensitive_fields_loader_1.loadSensitiveFieldsConfig)(customPath);
27
+ this.cachedFieldPatterns = (0, sensitive_fields_loader_1.getFieldPatterns)(customPath);
28
+ return this.cachedFields;
29
+ }
30
+ /**
31
+ * Get sensitive fields set (lazy loaded from JSON config)
32
+ */
33
+ static getSensitiveFields() {
34
+ return this.initializeSensitiveFields(this.configPath);
35
+ }
36
+ /**
37
+ * Get field patterns (lazy loaded from JSON config)
38
+ */
39
+ static getFieldPatterns() {
40
+ if (!this.cachedFieldPatterns) {
41
+ this.cachedFieldPatterns = (0, sensitive_fields_loader_1.getFieldPatterns)(this.configPath);
42
+ }
43
+ return this.cachedFieldPatterns;
44
+ }
45
+ /**
46
+ * Set custom configuration path (call before first use if needed)
47
+ */
48
+ static setConfigPath(customPath) {
49
+ this.configPath = customPath;
50
+ this.cachedFields = null;
51
+ this.cachedFieldPatterns = null;
52
+ }
9
53
  /**
10
54
  * Check if a field name indicates sensitive data
11
55
  */
12
56
  static isSensitiveField(key) {
57
+ const sensitiveFields = this.getSensitiveFields();
58
+ const fieldPatterns = this.getFieldPatterns();
13
59
  const lowerKey = key.toLowerCase().replace(/[_-]/g, '');
14
60
  // Check exact match
15
- if (this.sensitiveFields.has(lowerKey)) {
61
+ if (sensitiveFields.has(lowerKey)) {
16
62
  return true;
17
63
  }
18
- // Check if field contains sensitive keywords
19
- for (const sensitiveField of this.sensitiveFields) {
20
- if (lowerKey.includes(sensitiveField)) {
64
+ // Check if field contains sensitive keywords (from fieldPatterns)
65
+ for (const pattern of fieldPatterns) {
66
+ if (lowerKey.includes(pattern.toLowerCase())) {
21
67
  return true;
22
68
  }
23
69
  }
@@ -95,27 +141,7 @@ class DataMasker {
95
141
  }
96
142
  exports.DataMasker = DataMasker;
97
143
  DataMasker.MASKED_VALUE = '***MASKED***';
98
- DataMasker.sensitiveFields = new Set([
99
- 'password',
100
- 'passwd',
101
- 'pwd',
102
- 'secret',
103
- 'token',
104
- 'key',
105
- 'auth',
106
- 'authorization',
107
- 'cookie',
108
- 'session',
109
- 'ssn',
110
- 'creditcard',
111
- 'cc',
112
- 'cvv',
113
- 'pin',
114
- 'otp',
115
- 'apikey',
116
- 'accesstoken',
117
- 'refreshtoken',
118
- 'privatekey',
119
- 'secretkey'
120
- ]);
144
+ DataMasker.cachedFields = null;
145
+ DataMasker.cachedFieldPatterns = null;
146
+ DataMasker.configPath = undefined;
121
147
  //# sourceMappingURL=data-masker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-masker.js","sourceRoot":"","sources":["../../../src/utils/data-masker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-masker.js","sourceRoot":"","sources":["../../../src/utils/data-masker.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  * Supports structured error responses and backward compatibility
4
4
  */
5
5
  import { ErrorResponse } from '../types/config.types';
6
+ import { ErrorResponse as ErrorResponseSnakeCase } from '../types/errors.types';
6
7
  /**
7
8
  * Custom error class that extends Error
8
9
  * Supports structured ErrorResponse and backward compatibility with error_body dict
@@ -13,4 +14,29 @@ export declare class MisoClientError extends Error {
13
14
  readonly statusCode?: number;
14
15
  constructor(message: string, errorResponse?: ErrorResponse, errorBody?: Record<string, unknown>, statusCode?: number);
15
16
  }
17
+ /**
18
+ * Transform arbitrary error into standardized snake_case ErrorResponse.
19
+ * Handles both camelCase and snake_case error formats.
20
+ * @param err - Error object (AxiosError, network error, etc.)
21
+ * @returns Standardized snake_case ErrorResponse
22
+ */
23
+ export declare function transform_error_to_snake_case(err: unknown): ErrorResponseSnakeCase;
24
+ /**
25
+ * Exception class for snake_case error responses.
26
+ * Used with snake_case ErrorResponse format.
27
+ */
28
+ export declare class ApiErrorException extends Error {
29
+ status_code: number;
30
+ request_key?: string;
31
+ type?: string;
32
+ instance?: string;
33
+ errors: string[];
34
+ constructor(error: ErrorResponseSnakeCase);
35
+ }
36
+ /**
37
+ * Handle API error and throw snake_case ApiErrorException.
38
+ * @param err - Error object (AxiosError, network error, etc.)
39
+ * @throws ApiErrorException with snake_case error format
40
+ */
41
+ export declare function handle_api_error_snake_case(err: unknown): never;
16
42
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,SAAgB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9C,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;gBAGlC,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,aAAa,EAC7B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,UAAU,CAAC,EAAE,MAAM;CA0BtB"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,IAAI,sBAAsB,EAAiB,MAAM,uBAAuB,CAAC;AAE/F;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,SAAgB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9C,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;gBAGlC,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,aAAa,EAC7B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,UAAU,CAAC,EAAE,MAAM;CA0BtB;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,OAAO,GAAG,sBAAsB,CAsElF;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE,sBAAsB;CAc1C;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAG/D"}
@@ -4,7 +4,9 @@
4
4
  * Supports structured error responses and backward compatibility
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.MisoClientError = void 0;
7
+ exports.ApiErrorException = exports.MisoClientError = void 0;
8
+ exports.transform_error_to_snake_case = transform_error_to_snake_case;
9
+ exports.handle_api_error_snake_case = handle_api_error_snake_case;
8
10
  /**
9
11
  * Custom error class that extends Error
10
12
  * Supports structured ErrorResponse and backward compatibility with error_body dict
@@ -35,4 +37,101 @@ class MisoClientError extends Error {
35
37
  }
36
38
  }
37
39
  exports.MisoClientError = MisoClientError;
40
+ /**
41
+ * Transform arbitrary error into standardized snake_case ErrorResponse.
42
+ * Handles both camelCase and snake_case error formats.
43
+ * @param err - Error object (AxiosError, network error, etc.)
44
+ * @returns Standardized snake_case ErrorResponse
45
+ */
46
+ function transform_error_to_snake_case(err) {
47
+ if (err && typeof err === 'object' && 'response' in err) {
48
+ const axiosError = err;
49
+ if (axiosError.response?.data) {
50
+ const data = axiosError.response.data;
51
+ // Handle error envelope format
52
+ if (typeof data === 'object' && data !== null && 'error' in data) {
53
+ const envelope = data;
54
+ const errorData = envelope.error;
55
+ // Normalize status_code (support both camelCase and snake_case)
56
+ const statusCode = errorData.status_code ?? errorData.statusCode ?? axiosError.response.status ?? 500;
57
+ return {
58
+ errors: errorData.errors ?? ['Unknown error'],
59
+ type: errorData.type ?? 'about:blank',
60
+ title: errorData.title ?? axiosError.message ?? 'Unknown error',
61
+ status_code: statusCode,
62
+ instance: errorData.instance ?? axiosError.config?.url,
63
+ request_key: errorData.request_key
64
+ };
65
+ }
66
+ // Handle direct error format (snake_case or camelCase)
67
+ if (typeof data === 'object' && data !== null) {
68
+ const errorData = data;
69
+ const statusCode = (typeof errorData.status_code === 'number' ? errorData.status_code :
70
+ typeof errorData.statusCode === 'number' ? errorData.statusCode :
71
+ typeof axiosError.response?.status === 'number' ? axiosError.response.status :
72
+ 500);
73
+ return {
74
+ errors: Array.isArray(errorData.errors) ? errorData.errors : ['Unknown error'],
75
+ type: errorData.type ?? 'about:blank',
76
+ title: errorData.title ?? axiosError.message ?? 'Unknown error',
77
+ status_code: statusCode,
78
+ instance: errorData.instance ?? axiosError.config?.url,
79
+ request_key: errorData.request_key
80
+ };
81
+ }
82
+ }
83
+ // Fallback for response without data
84
+ return {
85
+ errors: [axiosError.message ?? 'Network error'],
86
+ type: 'about:blank',
87
+ title: 'Network error',
88
+ status_code: axiosError.response?.status ?? 0
89
+ };
90
+ }
91
+ // Handle non-Axios errors
92
+ if (err instanceof Error) {
93
+ return {
94
+ errors: [err.message ?? 'Unknown error'],
95
+ type: 'about:blank',
96
+ title: 'Error',
97
+ status_code: 0
98
+ };
99
+ }
100
+ // Last resort
101
+ return {
102
+ errors: ['Unknown error'],
103
+ type: 'about:blank',
104
+ title: 'Unknown error',
105
+ status_code: 0
106
+ };
107
+ }
108
+ /**
109
+ * Exception class for snake_case error responses.
110
+ * Used with snake_case ErrorResponse format.
111
+ */
112
+ class ApiErrorException extends Error {
113
+ constructor(error) {
114
+ super(error.title || 'API Error');
115
+ this.name = 'ApiErrorException';
116
+ this.status_code = error.status_code;
117
+ this.request_key = error.request_key;
118
+ this.type = error.type;
119
+ this.instance = error.instance;
120
+ this.errors = error.errors;
121
+ // Maintain proper stack trace for V8
122
+ if (Error.captureStackTrace) {
123
+ Error.captureStackTrace(this, ApiErrorException);
124
+ }
125
+ }
126
+ }
127
+ exports.ApiErrorException = ApiErrorException;
128
+ /**
129
+ * Handle API error and throw snake_case ApiErrorException.
130
+ * @param err - Error object (AxiosError, network error, etc.)
131
+ * @throws ApiErrorException with snake_case error format
132
+ */
133
+ function handle_api_error_snake_case(err) {
134
+ const error = transform_error_to_snake_case(err);
135
+ throw new ApiErrorException(error);
136
+ }
38
137
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/utils/errors.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIH;;;GAGG;AACH,MAAa,eAAgB,SAAQ,KAAK;IAKxC,YACE,OAAe,EACf,aAA6B,EAC7B,SAAmC,EACnC,UAAmB;QAEnB,iEAAiE;QACjE,IAAI,YAAY,GAAG,OAAO,CAAC;QAC3B,IAAI,aAAa,EAAE,CAAC;YAClB,sEAAsE;YACtE,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;gBACxB,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC;YACrC,CAAC;iBAAM,IAAI,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnE,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAE9B,iBAAiB;QACjB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,aAAa,EAAE,UAAU,CAAC;QAE1D,qCAAqC;QACrC,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF;AAnCD,0CAmCC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/utils/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Filter utility functions for parsing and building filter queries
3
+ */
4
+ import type { FilterOption, FilterQuery } from '../types/filter.types';
5
+ import { FilterBuilder } from '../types/filter.types';
6
+ /**
7
+ * Parse filter query parameters into structured FilterOption array.
8
+ * Supports format: `?filter=field:op:value` or `?filter[]=field:op:value&filter[]=...`
9
+ * @param query - Query parameters object (e.g., from URLSearchParams or request query)
10
+ * @returns Array of parsed filter options
11
+ */
12
+ export declare function parse_filter_params(query: Record<string, unknown>): FilterOption[];
13
+ /**
14
+ * Build query string from FilterQuery object.
15
+ * @param options - FilterQuery object with filters, sort, pagination, and field selection
16
+ * @returns Query string (e.g., `?filter=status:eq:active&sort=-updated_at&page=1&page_size=25`)
17
+ */
18
+ export declare function build_query_string(options: FilterQuery): string;
19
+ /**
20
+ * Apply filters locally to an array (used for mocks/tests).
21
+ * @param data - Array of items to filter
22
+ * @param filters - Array of filter options to apply
23
+ * @returns Filtered array
24
+ */
25
+ export declare function apply_filters<T extends Record<string, unknown>>(data: T[], filters: FilterOption[]): T[];
26
+ export { FilterBuilder };
27
+ //# sourceMappingURL=filter.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/filter.utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAItD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,EAAE,CAqBlF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAoB/D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,CAgCxG;AAGD,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ /**
3
+ * Filter utility functions for parsing and building filter queries
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FilterBuilder = void 0;
7
+ exports.parse_filter_params = parse_filter_params;
8
+ exports.build_query_string = build_query_string;
9
+ exports.apply_filters = apply_filters;
10
+ const filter_types_1 = require("../types/filter.types");
11
+ Object.defineProperty(exports, "FilterBuilder", { enumerable: true, get: function () { return filter_types_1.FilterBuilder; } });
12
+ const FILTER_PATTERN = /^([\w.]+):(eq|neq|in|nin|gt|lt|gte|lte|contains|like):(.+)$/i;
13
+ /**
14
+ * Parse filter query parameters into structured FilterOption array.
15
+ * Supports format: `?filter=field:op:value` or `?filter[]=field:op:value&filter[]=...`
16
+ * @param query - Query parameters object (e.g., from URLSearchParams or request query)
17
+ * @returns Array of parsed filter options
18
+ */
19
+ function parse_filter_params(query) {
20
+ const filterParam = query.filter;
21
+ const filters = Array.isArray(filterParam) ? filterParam : filterParam ? [filterParam] : [];
22
+ const result = [];
23
+ filters.forEach((f) => {
24
+ const filterString = String(f);
25
+ const match = filterString.match(FILTER_PATTERN);
26
+ if (!match) {
27
+ return;
28
+ }
29
+ const [, field, op, raw] = match;
30
+ // Parse value: if comma-separated, split into array, otherwise keep as string
31
+ // Note: API expects strings for filter values, numbers are parsed server-side
32
+ const value = raw.includes(',') ? raw.split(',') : raw;
33
+ result.push({ field, op: op, value });
34
+ });
35
+ return result;
36
+ }
37
+ /**
38
+ * Build query string from FilterQuery object.
39
+ * @param options - FilterQuery object with filters, sort, pagination, and field selection
40
+ * @returns Query string (e.g., `?filter=status:eq:active&sort=-updated_at&page=1&page_size=25`)
41
+ */
42
+ function build_query_string(options) {
43
+ const params = new URLSearchParams();
44
+ options.filters?.forEach((f) => {
45
+ const val = Array.isArray(f.value) ? f.value.join(',') : String(f.value);
46
+ params.append('filter', `${f.field}:${f.op}:${val}`);
47
+ });
48
+ options.sort?.forEach((s) => params.append('sort', s));
49
+ if (options.page) {
50
+ params.append('page', options.page.toString());
51
+ }
52
+ if (options.page_size) {
53
+ params.append('page_size', options.page_size.toString());
54
+ }
55
+ if (options.fields && options.fields.length > 0) {
56
+ params.append('fields', options.fields.join(','));
57
+ }
58
+ return params.toString();
59
+ }
60
+ /**
61
+ * Apply filters locally to an array (used for mocks/tests).
62
+ * @param data - Array of items to filter
63
+ * @param filters - Array of filter options to apply
64
+ * @returns Filtered array
65
+ */
66
+ function apply_filters(data, filters) {
67
+ return data.filter((item) => filters.every((f) => {
68
+ const v = item[f.field];
69
+ const value = f.value;
70
+ if (Array.isArray(value)) {
71
+ return f.op === 'in' ? value.includes(v) : !value.includes(v);
72
+ }
73
+ switch (f.op) {
74
+ case 'eq':
75
+ return v === value;
76
+ case 'neq':
77
+ return v !== value;
78
+ case 'gt':
79
+ return v > value;
80
+ case 'lt':
81
+ return v < value;
82
+ case 'gte':
83
+ return v >= value;
84
+ case 'lte':
85
+ return v <= value;
86
+ case 'contains':
87
+ return String(v).includes(String(value));
88
+ case 'like':
89
+ return new RegExp(String(value), 'i').test(String(v));
90
+ default:
91
+ return true;
92
+ }
93
+ }));
94
+ }
95
+ //# sourceMappingURL=filter.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.utils.js","sourceRoot":"","sources":["../../../src/utils/filter.utils.ts"],"names":[],"mappings":"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"}
@@ -1,38 +1,33 @@
1
1
  /**
2
- * HTTP client utility for controller communication
2
+ * Public HTTP client with automatic audit and debug logging
3
+ * Wraps InternalHttpClient and adds ISO 27001 compliant logging
3
4
  */
4
5
  import { AxiosRequestConfig } from 'axios';
5
6
  import { MisoClientConfig } from '../types/config.types';
7
+ import { LoggerService } from '../services/logger.service';
6
8
  export declare class HttpClient {
7
- private axios;
9
+ private internalClient;
10
+ private logger;
8
11
  readonly config: MisoClientConfig;
9
- private clientToken;
10
- private tokenExpiresAt;
11
- private tokenRefreshPromise;
12
- constructor(config: MisoClientConfig);
12
+ constructor(config: MisoClientConfig, logger: LoggerService);
13
13
  /**
14
- * Get client token, fetching if needed
15
- * Proactively refreshes if token will expire within 60 seconds
14
+ * Setup audit and debug logging interceptors
16
15
  */
17
- private getClientToken;
16
+ private setupAuditLogging;
18
17
  /**
19
- * Fetch client token from controller
18
+ * Check if request should be audited
19
+ * Excludes certain endpoints to prevent infinite loops
20
20
  */
21
- private fetchClientToken;
21
+ private shouldAuditRequest;
22
22
  /**
23
- * Check if error is an AxiosError (supports both instanceof and isAxiosError property)
23
+ * Extract user ID from JWT token
24
24
  */
25
- private isAxiosError;
25
+ private extractUserIdFromToken;
26
26
  /**
27
- * Parse error response from AxiosError
28
- * Attempts to parse structured ErrorResponse, falls back to null if parsing fails
27
+ * Log HTTP request audit event
28
+ * Masks all sensitive data before logging (ISO 27001 compliance)
29
29
  */
30
- private parseErrorResponse;
31
- /**
32
- * Create MisoClientError from AxiosError
33
- * Parses structured error response if available, falls back to errorBody
34
- */
35
- private createMisoClientError;
30
+ private logHttpRequestAudit;
36
31
  get<T>(url: string, config?: AxiosRequestConfig): Promise<T>;
37
32
  post<T>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
38
33
  put<T>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
@@ -40,5 +35,28 @@ export declare class HttpClient {
40
35
  request<T>(method: 'GET' | 'POST' | 'PUT' | 'DELETE', url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
41
36
  authenticatedRequest<T>(method: 'GET' | 'POST' | 'PUT' | 'DELETE', url: string, token: string, // User authentication token (sent as Bearer token)
42
37
  data?: unknown, config?: AxiosRequestConfig): Promise<T>;
38
+ /**
39
+ * GET request with filter builder support.
40
+ * Builds query string from FilterBuilder and appends to URL.
41
+ * @param url - Request URL (without query string)
42
+ * @param filterBuilder - FilterBuilder instance with filters
43
+ * @param config - Optional Axios request config
44
+ * @returns Promise with response data
45
+ */
46
+ getWithFilters<T>(url: string, filterBuilder: {
47
+ toQueryString(): string;
48
+ }, config?: AxiosRequestConfig): Promise<T>;
49
+ /**
50
+ * GET request with pagination support.
51
+ * Appends pagination query parameters (page, page_size) to URL.
52
+ * @param url - Request URL (without query string)
53
+ * @param pagination - Pagination options with page and page_size
54
+ * @param config - Optional Axios request config
55
+ * @returns Promise with response data
56
+ */
57
+ getPaginated<T>(url: string, pagination: {
58
+ page: number;
59
+ page_size: number;
60
+ }, config?: AxiosRequestConfig): Promise<T>;
43
61
  }
44
62
  //# sourceMappingURL=http-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/utils/http-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAc,EAEZ,kBAAkB,EAInB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAuD,MAAM,uBAAuB,CAAC;AAG9G,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAgB;IAC7B,SAAgB,MAAM,EAAE,gBAAgB,CAAC;IACzC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,mBAAmB,CAAgC;gBAE/C,MAAM,EAAE,gBAAgB;IA6CpC;;;OAGG;YACW,cAAc;IAuB5B;;OAEG;YACW,gBAAgB;IA+B9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA6D1B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAuBvB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAa5D,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAa7E,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAa5E,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAc/D,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAmBP,oBAAoB,CAAC,CAAC,EAC1B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EAAE,mDAAmD;IAClE,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;CAwBd"}
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/utils/http-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,kBAAkB,EAInB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAe3D,qBAAa,UAAU;IACrB,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,MAAM,CAAgB;IAC9B,SAAgB,MAAM,EAAE,gBAAgB,CAAC;gBAE7B,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa;IAa3D;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6CzB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;OAGG;YACW,mBAAmB;IAmG3B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI5D,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI7E,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI5E,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAK/D,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAQP,oBAAoB,CAAC,CAAC,EAC1B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EAAE,mDAAmD;IAClE,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAIb;;;;;;;OAOG;IACG,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE;QAAE,aAAa,IAAI,MAAM,CAAA;KAAE,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAMzH;;;;;;;OAOG;IACG,YAAY,CAAC,CAAC,EAClB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAC/C,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;CAOd"}