@aifabrix/miso-client 3.8.1 → 3.9.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/CHANGELOG.md +67 -0
- package/dist/index.d.ts +31 -158
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -164
- package/dist/index.js.map +1 -1
- package/dist/services/application-context.service.d.ts +1 -1
- package/dist/services/application-context.service.d.ts.map +1 -1
- package/dist/services/application-context.service.js +9 -1
- package/dist/services/application-context.service.js.map +1 -1
- package/dist/services/auth-error-handler.d.ts +21 -0
- package/dist/services/auth-error-handler.d.ts.map +1 -0
- package/dist/services/auth-error-handler.js +68 -0
- package/dist/services/auth-error-handler.js.map +1 -0
- package/dist/services/auth.service.d.ts +0 -1
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +31 -298
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/browser-permission.service.d.ts +1 -5
- package/dist/services/browser-permission.service.d.ts.map +1 -1
- package/dist/services/browser-permission.service.js +8 -37
- package/dist/services/browser-permission.service.js.map +1 -1
- package/dist/services/browser-role.service.d.ts +1 -5
- package/dist/services/browser-role.service.d.ts.map +1 -1
- package/dist/services/browser-role.service.js +8 -43
- package/dist/services/browser-role.service.js.map +1 -1
- package/dist/services/logger/logger.service.d.ts +8 -80
- package/dist/services/logger/logger.service.d.ts.map +1 -1
- package/dist/services/logger/logger.service.js +8 -80
- package/dist/services/logger/logger.service.js.map +1 -1
- package/dist/services/token-validation.service.d.ts.map +1 -1
- package/dist/services/token-validation.service.js +11 -3
- package/dist/services/token-validation.service.js.map +1 -1
- package/dist/types/config.types.d.ts +2 -0
- package/dist/types/config.types.d.ts.map +1 -1
- package/dist/types/config.types.js.map +1 -1
- package/dist/types/filter-schema.types.d.ts +104 -0
- package/dist/types/filter-schema.types.d.ts.map +1 -0
- package/dist/types/filter-schema.types.js +40 -0
- package/dist/types/filter-schema.types.js.map +1 -0
- package/dist/types/filter.types.d.ts +1 -1
- package/dist/types/filter.types.d.ts.map +1 -1
- package/dist/types/filter.types.js.map +1 -1
- package/dist/types/token-validation.types.d.ts +5 -1
- package/dist/types/token-validation.types.d.ts.map +1 -1
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +11 -0
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/controller-url-resolver.d.ts +33 -0
- package/dist/utils/controller-url-resolver.d.ts.map +1 -1
- package/dist/utils/controller-url-resolver.js +62 -0
- package/dist/utils/controller-url-resolver.js.map +1 -1
- package/dist/utils/data-client-auth.d.ts +5 -37
- package/dist/utils/data-client-auth.d.ts.map +1 -1
- package/dist/utils/data-client-auth.js +98 -377
- package/dist/utils/data-client-auth.js.map +1 -1
- package/dist/utils/data-client-init.d.ts +46 -0
- package/dist/utils/data-client-init.d.ts.map +1 -0
- package/dist/utils/data-client-init.js +128 -0
- package/dist/utils/data-client-init.js.map +1 -0
- package/dist/utils/data-client-oauth.d.ts +20 -0
- package/dist/utils/data-client-oauth.d.ts.map +1 -0
- package/dist/utils/data-client-oauth.js +138 -0
- package/dist/utils/data-client-oauth.js.map +1 -0
- package/dist/utils/data-client-permissions.d.ts +63 -0
- package/dist/utils/data-client-permissions.d.ts.map +1 -0
- package/dist/utils/data-client-permissions.js +123 -0
- package/dist/utils/data-client-permissions.js.map +1 -0
- package/dist/utils/data-client-request.d.ts +1 -1
- package/dist/utils/data-client-request.d.ts.map +1 -1
- package/dist/utils/data-client-request.js +27 -235
- package/dist/utils/data-client-request.js.map +1 -1
- package/dist/utils/data-client-response.d.ts +40 -0
- package/dist/utils/data-client-response.d.ts.map +1 -0
- package/dist/utils/data-client-response.js +144 -0
- package/dist/utils/data-client-response.js.map +1 -0
- package/dist/utils/data-client-roles.d.ts +63 -0
- package/dist/utils/data-client-roles.d.ts.map +1 -0
- package/dist/utils/data-client-roles.js +123 -0
- package/dist/utils/data-client-roles.js.map +1 -0
- package/dist/utils/data-client.d.ts +0 -185
- package/dist/utils/data-client.d.ts.map +1 -1
- package/dist/utils/data-client.js +66 -505
- package/dist/utils/data-client.js.map +1 -1
- package/dist/utils/filter-colon.utils.d.ts +26 -0
- package/dist/utils/filter-colon.utils.d.ts.map +1 -0
- package/dist/utils/filter-colon.utils.js +112 -0
- package/dist/utils/filter-colon.utils.js.map +1 -0
- package/dist/utils/filter-schema.utils.d.ts +84 -0
- package/dist/utils/filter-schema.utils.d.ts.map +1 -0
- package/dist/utils/filter-schema.utils.js +381 -0
- package/dist/utils/filter-schema.utils.js.map +1 -0
- package/dist/utils/filter.utils.d.ts +9 -85
- package/dist/utils/filter.utils.d.ts.map +1 -1
- package/dist/utils/filter.utils.js +79 -138
- package/dist/utils/filter.utils.js.map +1 -1
- package/dist/utils/http-error-handler.d.ts +22 -0
- package/dist/utils/http-error-handler.d.ts.map +1 -0
- package/dist/utils/http-error-handler.js +84 -0
- package/dist/utils/http-error-handler.js.map +1 -0
- package/dist/utils/http-response-validator.d.ts +15 -0
- package/dist/utils/http-response-validator.d.ts.map +1 -0
- package/dist/utils/http-response-validator.js +42 -0
- package/dist/utils/http-response-validator.js.map +1 -0
- package/dist/utils/internal-http-client.d.ts +4 -22
- package/dist/utils/internal-http-client.d.ts.map +1 -1
- package/dist/utils/internal-http-client.js +53 -337
- package/dist/utils/internal-http-client.js.map +1 -1
- package/dist/utils/token-utils.d.ts.map +1 -1
- package/dist/utils/token-utils.js +1 -29
- package/dist/utils/token-utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Filter schema types for validation and SQL compilation.
|
|
4
|
+
* Provides type-safe filter definitions per resource.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.DefaultOperatorsByType = exports.FilterErrorCode = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Error codes for filter validation.
|
|
10
|
+
*/
|
|
11
|
+
exports.FilterErrorCode = {
|
|
12
|
+
/** Field is not defined in the schema. */
|
|
13
|
+
UNKNOWN_FIELD: "UNKNOWN_FIELD",
|
|
14
|
+
/** Operator is not allowed for the field type. */
|
|
15
|
+
INVALID_OPERATOR: "INVALID_OPERATOR",
|
|
16
|
+
/** Value type does not match field type. */
|
|
17
|
+
INVALID_TYPE: "INVALID_TYPE",
|
|
18
|
+
/** Value is not a valid UUID. */
|
|
19
|
+
INVALID_UUID: "INVALID_UUID",
|
|
20
|
+
/** Value is not a valid timestamp/date. */
|
|
21
|
+
INVALID_DATE: "INVALID_DATE",
|
|
22
|
+
/** Value is not in the allowed enum values. */
|
|
23
|
+
INVALID_ENUM: "INVALID_ENUM",
|
|
24
|
+
/** 'in' or 'nin' operator requires a non-empty array. */
|
|
25
|
+
INVALID_IN: "INVALID_IN",
|
|
26
|
+
/** Filter format parsing failed. */
|
|
27
|
+
INVALID_FORMAT: "INVALID_FORMAT",
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Default operators allowed per field type.
|
|
31
|
+
*/
|
|
32
|
+
exports.DefaultOperatorsByType = {
|
|
33
|
+
string: ["eq", "neq", "in", "nin", "contains", "like", "ilike"],
|
|
34
|
+
number: ["eq", "neq", "gt", "gte", "lt", "lte", "in", "nin"],
|
|
35
|
+
boolean: ["eq"],
|
|
36
|
+
uuid: ["eq", "in"],
|
|
37
|
+
timestamp: ["eq", "gt", "gte", "lt", "lte"],
|
|
38
|
+
enum: ["eq", "in"],
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=filter-schema.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-schema.types.js","sourceRoot":"","sources":["../../src/types/filter-schema.types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAoGH;;GAEG;AACU,QAAA,eAAe,GAAG;IAC7B,0CAA0C;IAC1C,aAAa,EAAE,eAAe;IAE9B,kDAAkD;IAClD,gBAAgB,EAAE,kBAAkB;IAEpC,4CAA4C;IAC5C,YAAY,EAAE,cAAc;IAE5B,iCAAiC;IACjC,YAAY,EAAE,cAAc;IAE5B,2CAA2C;IAC3C,YAAY,EAAE,cAAc;IAE5B,+CAA+C;IAC/C,YAAY,EAAE,cAAc;IAE5B,yDAAyD;IACzD,UAAU,EAAE,YAAY;IAExB,oCAAoC;IACpC,cAAc,EAAE,gBAAgB;CACxB,CAAC;AAOX;;GAEG;AACU,QAAA,sBAAsB,GAA8C;IAC/E,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC;IAC/D,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;IAC5D,OAAO,EAAE,CAAC,IAAI,CAAC;IACf,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IAClB,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;IAC3C,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;CACnB,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* Filter operators supported by the API.
|
|
7
7
|
*/
|
|
8
|
-
export type FilterOperator = "eq" | "neq" | "in" | "nin" | "gt" | "lt" | "gte" | "lte" | "contains" | "like" | "isNull" | "isNotNull";
|
|
8
|
+
export type FilterOperator = "eq" | "neq" | "in" | "nin" | "gt" | "lt" | "gte" | "lte" | "contains" | "like" | "ilike" | "isNull" | "isNotNull";
|
|
9
9
|
/**
|
|
10
10
|
* Single filter option with field, operator, and value.
|
|
11
11
|
*/
|
|
@@ -1 +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,GACN,QAAQ,GACR,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IAEd,uBAAuB;IACvB,EAAE,EAAE,cAAc,CAAC;IAEnB,sGAAsG;IACtG,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;CAClE;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,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAsB;IAErC;;;;;;OAMG;IACH,GAAG,CACD,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,GAC/D,aAAa;IAKhB;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,aAAa;IAK/C;;;OAGG;IACH,KAAK,IAAI,YAAY,EAAE;IAIvB;;;OAGG;IACH,aAAa,IAAI,MAAM;CAmBxB"}
|
|
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,GACN,OAAO,GACP,QAAQ,GACR,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IAEd,uBAAuB;IACvB,EAAE,EAAE,cAAc,CAAC;IAEnB,sGAAsG;IACtG,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;CAClE;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,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAsB;IAErC;;;;;;OAMG;IACH,GAAG,CACD,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,GAC/D,aAAa;IAKhB;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,aAAa;IAK/C;;;OAGG;IACH,KAAK,IAAI,YAAY,EAAE;IAIvB;;;OAGG;IACH,aAAa,IAAI,MAAM;CAmBxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.types.js","sourceRoot":"","sources":["../../src/types/filter.types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"filter.types.js","sourceRoot":"","sources":["../../src/types/filter.types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAsDH;;;GAGG;AACH,MAAa,aAAa;IAA1B;QACU,YAAO,GAAmB,EAAE,CAAC;IA2DvC,CAAC;IAzDC;;;;;;OAMG;IACH,GAAG,CACD,KAAa,EACb,EAAkB,EAClB,KAAgE;QAEhE,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,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAA4C,EAAE,CAAC;QAC/D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACzB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAC3B,CAAC;YACD,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,6EAA6E;QAC7E,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACF;AA5DD,sCA4DC"}
|
|
@@ -7,8 +7,12 @@ import { JWTPayload } from "jose";
|
|
|
7
7
|
export type TokenType = "keycloak" | "delegated" | "auto";
|
|
8
8
|
/** Keycloak server configuration for local token validation */
|
|
9
9
|
export interface KeycloakConfig {
|
|
10
|
-
/** Keycloak server URL (
|
|
10
|
+
/** Keycloak server URL (fallback for backward compatibility) */
|
|
11
11
|
authServerUrl: string;
|
|
12
|
+
/** Keycloak private URL for server-side JWKS fetching (internal network) */
|
|
13
|
+
authServerPrivateUrl?: string;
|
|
14
|
+
/** Keycloak public URL for browser-side and issuer validation (public network) */
|
|
15
|
+
authServerPublicUrl?: string;
|
|
12
16
|
/** Keycloak realm name */
|
|
13
17
|
realm: string;
|
|
14
18
|
/** Client ID for audience validation (optional) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-validation.types.d.ts","sourceRoot":"","sources":["../../src/types/token-validation.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC,wCAAwC;AACxC,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC;AAE1D,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,
|
|
1
|
+
{"version":3,"file":"token-validation.types.d.ts","sourceRoot":"","sources":["../../src/types/token-validation.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC,wCAAwC;AACxC,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC;AAE1D,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,kDAAkD;AAClD,MAAM,WAAW,uBAAuB;IACtC,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,uDAAuD;AACvD,MAAM,MAAM,uBAAuB,GAAG,CACpC,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;AAE7C,mCAAmC;AACnC,MAAM,WAAW,sBAAsB;IACrC,iCAAiC;IACjC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,uBAAuB,GAAG,uBAAuB,CAAC;IACtE,+BAA+B;IAC/B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,iEAAiE;IACjE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,iCAAiC;AACjC,MAAM,WAAW,qBAAqB;IACpC,6BAA6B;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,uCAAuC;IACvC,SAAS,EAAE,SAAS,CAAC;IACrB,uCAAuC;IACvC,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qCAAqC;AACrC,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAClC,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACtD;AAED,kDAAkD;AAClD,MAAM,WAAW,oBAAoB;IACnC,oBAAoB;IACpB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -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,EACL,gBAAgB,EAIjB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,wBAAgB,UAAU,IAAI,gBAAgB,
|
|
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,EACL,gBAAgB,EAIjB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,wBAAgB,UAAU,IAAI,gBAAgB,CAgJ7C"}
|
|
@@ -114,6 +114,17 @@ function loadConfig() {
|
|
|
114
114
|
// Default: true in development, false in production
|
|
115
115
|
config.validateResponses = process.env.NODE_ENV !== "production";
|
|
116
116
|
}
|
|
117
|
+
// Optional Keycloak configuration for local token validation
|
|
118
|
+
if (process.env.KEYCLOAK_SERVER_URL || process.env.KEYCLOAK_PUBLIC_SERVER_URL) {
|
|
119
|
+
config.keycloak = {
|
|
120
|
+
authServerUrl: process.env.KEYCLOAK_PUBLIC_SERVER_URL || process.env.KEYCLOAK_SERVER_URL || '',
|
|
121
|
+
authServerPrivateUrl: process.env.KEYCLOAK_SERVER_URL,
|
|
122
|
+
authServerPublicUrl: process.env.KEYCLOAK_PUBLIC_SERVER_URL,
|
|
123
|
+
realm: process.env.KEYCLOAK_REALM || '',
|
|
124
|
+
clientId: process.env.KEYCLOAK_CLIENT_ID,
|
|
125
|
+
verifyAudience: process.env.KEYCLOAK_VERIFY_AUDIENCE === 'true',
|
|
126
|
+
};
|
|
127
|
+
}
|
|
117
128
|
return config;
|
|
118
129
|
}
|
|
119
130
|
//# 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;;AAaH,
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* and configuration (public vs private URLs)
|
|
5
5
|
*/
|
|
6
6
|
import { MisoClientConfig } from "../types/config.types";
|
|
7
|
+
import { KeycloakConfig } from "../types/token-validation.types";
|
|
7
8
|
/**
|
|
8
9
|
* Check if running in browser environment
|
|
9
10
|
* Detects browser by checking for window, localStorage, and fetch globals
|
|
@@ -38,4 +39,36 @@ export declare function validateUrl(url: string): boolean;
|
|
|
38
39
|
* @throws Error if no valid URL is available
|
|
39
40
|
*/
|
|
40
41
|
export declare function resolveControllerUrl(config: MisoClientConfig): string;
|
|
42
|
+
/**
|
|
43
|
+
* Resolve Keycloak URL based on environment and configuration
|
|
44
|
+
*
|
|
45
|
+
* Priority order:
|
|
46
|
+
* 1. Environment-specific URL (authServerPublicUrl for browser, authServerPrivateUrl for server)
|
|
47
|
+
* 2. Fallback to authServerUrl if environment-specific URL not provided
|
|
48
|
+
* 3. Throw error if no URL available
|
|
49
|
+
*
|
|
50
|
+
* @param config - KeycloakConfig object
|
|
51
|
+
* @returns Resolved Keycloak URL string
|
|
52
|
+
* @throws Error if no valid URL is available
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* // Server environment - uses private URL
|
|
57
|
+
* const config: KeycloakConfig = {
|
|
58
|
+
* authServerUrl: 'https://keycloak.example.com',
|
|
59
|
+
* authServerPrivateUrl: 'http://keycloak-internal:8080',
|
|
60
|
+
* realm: 'my-realm'
|
|
61
|
+
* };
|
|
62
|
+
* const url = resolveKeycloakUrl(config); // Returns: 'http://127.0.0.1:8080'
|
|
63
|
+
*
|
|
64
|
+
* // Browser environment - uses public URL
|
|
65
|
+
* const browserConfig: KeycloakConfig = {
|
|
66
|
+
* authServerUrl: 'https://keycloak.example.com',
|
|
67
|
+
* authServerPublicUrl: 'https://keycloak.example.com',
|
|
68
|
+
* realm: 'my-realm'
|
|
69
|
+
* };
|
|
70
|
+
* const browserUrl = resolveKeycloakUrl(browserConfig); // Returns: 'https://keycloak.example.com'
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare function resolveKeycloakUrl(config: KeycloakConfig): string;
|
|
41
74
|
//# sourceMappingURL=controller-url-resolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-url-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/controller-url-resolver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"controller-url-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/controller-url-resolver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE;;;GAGG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAOnC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOhD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAyCrE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAuCjE"}
|
|
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.isBrowser = isBrowser;
|
|
9
9
|
exports.validateUrl = validateUrl;
|
|
10
10
|
exports.resolveControllerUrl = resolveControllerUrl;
|
|
11
|
+
exports.resolveKeycloakUrl = resolveKeycloakUrl;
|
|
11
12
|
/**
|
|
12
13
|
* Check if running in browser environment
|
|
13
14
|
* Detects browser by checking for window, localStorage, and fetch globals
|
|
@@ -85,4 +86,65 @@ function resolveControllerUrl(config) {
|
|
|
85
86
|
}
|
|
86
87
|
return resolvedUrl;
|
|
87
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Resolve Keycloak URL based on environment and configuration
|
|
91
|
+
*
|
|
92
|
+
* Priority order:
|
|
93
|
+
* 1. Environment-specific URL (authServerPublicUrl for browser, authServerPrivateUrl for server)
|
|
94
|
+
* 2. Fallback to authServerUrl if environment-specific URL not provided
|
|
95
|
+
* 3. Throw error if no URL available
|
|
96
|
+
*
|
|
97
|
+
* @param config - KeycloakConfig object
|
|
98
|
+
* @returns Resolved Keycloak URL string
|
|
99
|
+
* @throws Error if no valid URL is available
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* // Server environment - uses private URL
|
|
104
|
+
* const config: KeycloakConfig = {
|
|
105
|
+
* authServerUrl: 'https://keycloak.example.com',
|
|
106
|
+
* authServerPrivateUrl: 'http://keycloak-internal:8080',
|
|
107
|
+
* realm: 'my-realm'
|
|
108
|
+
* };
|
|
109
|
+
* const url = resolveKeycloakUrl(config); // Returns: 'http://127.0.0.1:8080'
|
|
110
|
+
*
|
|
111
|
+
* // Browser environment - uses public URL
|
|
112
|
+
* const browserConfig: KeycloakConfig = {
|
|
113
|
+
* authServerUrl: 'https://keycloak.example.com',
|
|
114
|
+
* authServerPublicUrl: 'https://keycloak.example.com',
|
|
115
|
+
* realm: 'my-realm'
|
|
116
|
+
* };
|
|
117
|
+
* const browserUrl = resolveKeycloakUrl(browserConfig); // Returns: 'https://keycloak.example.com'
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
function resolveKeycloakUrl(config) {
|
|
121
|
+
const isBrowserEnv = isBrowser();
|
|
122
|
+
let resolvedUrl; // Step 1: Try environment-specific URL
|
|
123
|
+
if (isBrowserEnv) {
|
|
124
|
+
// Browser environment: use public URL
|
|
125
|
+
resolvedUrl = config.authServerPublicUrl;
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
// Server environment: use private URL
|
|
129
|
+
resolvedUrl = config.authServerPrivateUrl;
|
|
130
|
+
}
|
|
131
|
+
// Step 2: Fallback to authServerUrl if environment-specific URL not provided
|
|
132
|
+
if (!resolvedUrl) {
|
|
133
|
+
resolvedUrl = config.authServerUrl;
|
|
134
|
+
}
|
|
135
|
+
// Step 3: Validate and return (or throw error)
|
|
136
|
+
if (!resolvedUrl) {
|
|
137
|
+
throw new Error(`No Keycloak URL configured. Please provide ${isBrowserEnv ? "authServerPublicUrl" : "authServerPrivateUrl"} or authServerUrl in your Keycloak configuration.`);
|
|
138
|
+
}
|
|
139
|
+
// Validate URL format
|
|
140
|
+
if (!validateUrl(resolvedUrl)) {
|
|
141
|
+
throw new Error(`Invalid Keycloak URL format: "${resolvedUrl}". URL must be a valid HTTP or HTTPS URL.`);
|
|
142
|
+
}
|
|
143
|
+
// Resolve localhost to 127.0.0.1 to force IPv4 and avoid IPv6 connection issues
|
|
144
|
+
// This prevents axios from hanging on IPv6 (::1) connections
|
|
145
|
+
if (resolvedUrl.includes('localhost')) {
|
|
146
|
+
resolvedUrl = resolvedUrl.replace(/localhost/g, '127.0.0.1');
|
|
147
|
+
}
|
|
148
|
+
return resolvedUrl;
|
|
149
|
+
}
|
|
88
150
|
//# sourceMappingURL=controller-url-resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-url-resolver.js","sourceRoot":"","sources":["../../src/utils/controller-url-resolver.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;
|
|
1
|
+
{"version":3,"file":"controller-url-resolver.js","sourceRoot":"","sources":["../../src/utils/controller-url-resolver.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AASH,8BAOC;AAiBD,kCAOC;AAcD,oDAyCC;AAiCD,gDAuCC;AAlKD;;;GAGG;AACH,SAAgB,SAAS;IACvB,OAAO,CACL,OAAQ,UAAmC,CAAC,MAAM,KAAK,WAAW;QAClE,OAAQ,UAAyC,CAAC,YAAY;YAC5D,WAAW;QACb,OAAQ,UAAkC,CAAC,KAAK,KAAK,WAAW,CACjE,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,oBAAoB,CAAC,MAAwB;IAC3D,MAAM,YAAY,GAAG,SAAS,EAAE,CAAC;IACjC,IAAI,WAA+B,CAAC;IAEpC,uCAAuC;IACvC,IAAI,YAAY,EAAE,CAAC;QACjB,sCAAsC;QACtC,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,sCAAsC;QACtC,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC;IAC5C,CAAC;IAED,6EAA6E;IAC7E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;IACrC,CAAC;IAED,+CAA+C;IAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,gDACE,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,sBACzC,0CAA0C,CAC3C,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,mCAAmC,WAAW,2CAA2C,CAC1F,CAAC;IACJ,CAAC;IAED,gFAAgF;IAChF,6DAA6D;IAC7D,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,SAAgB,kBAAkB,CAAC,MAAsB;IACvD,MAAM,YAAY,GAAG,SAAS,EAAE,CAAC;IACjC,IAAI,WAA+B,CAAC,CAAE,uCAAuC;IAC7E,IAAI,YAAY,EAAE,CAAC;QACjB,sCAAsC;QACtC,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,sCAAsC;QACtC,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC;IAC5C,CAAC;IAED,6EAA6E;IAC7E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;IACrC,CAAC;IAED,+CAA+C;IAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,8CACE,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,sBACzC,mDAAmD,CACpD,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,iCAAiC,WAAW,2CAA2C,CACxF,CAAC;IACJ,CAAC;IAED,gFAAgF;IAChF,6DAA6D;IAC7D,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -5,24 +5,11 @@
|
|
|
5
5
|
import { MisoClient } from "../index";
|
|
6
6
|
import { DataClientConfig, MisoClientConfig } from "../types/data-client.types";
|
|
7
7
|
import { ClientTokenInfo } from "./token-utils";
|
|
8
|
+
export { handleOAuthCallback } from "./data-client-oauth";
|
|
8
9
|
/**
|
|
9
10
|
* Get authentication token from localStorage
|
|
10
11
|
*/
|
|
11
12
|
export declare function getToken(tokenKeys?: string[]): string | null;
|
|
12
|
-
/**
|
|
13
|
-
* Handle OAuth callback with ISO 27001 compliant security
|
|
14
|
-
* Extracts token from URL hash fragment and stores securely
|
|
15
|
-
*
|
|
16
|
-
* Security features:
|
|
17
|
-
* - Immediate hash cleanup (< 100ms)
|
|
18
|
-
* - Token format validation
|
|
19
|
-
* - HTTPS enforcement check
|
|
20
|
-
* - Secure error handling
|
|
21
|
-
*
|
|
22
|
-
* @param config - DataClient configuration
|
|
23
|
-
* @returns Extracted token or null if not found/invalid
|
|
24
|
-
*/
|
|
25
|
-
export declare function handleOAuthCallback(config: DataClientConfig): string | null;
|
|
26
13
|
/**
|
|
27
14
|
* Check if client token is available (from localStorage cache or config)
|
|
28
15
|
*/
|
|
@@ -31,42 +18,23 @@ export declare function hasClientToken(misoClient: MisoClient | null, misoConfig
|
|
|
31
18
|
* Check if any authentication token is available (user token OR client token)
|
|
32
19
|
*/
|
|
33
20
|
export declare function hasAnyToken(tokenKeys?: string[], misoClient?: MisoClient | null, misoConfig?: MisoClientConfig): boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Get client token for requests
|
|
36
|
-
* Checks localStorage cache first, then config, then calls getEnvironmentToken() if needed
|
|
37
|
-
* @returns Client token string or null if unavailable
|
|
38
|
-
*/
|
|
39
|
-
export declare function getClientToken(misoConfig: MisoClientConfig | undefined, _baseUrl: string, _getEnvironmentToken: () => Promise<string>): Promise<string | null>;
|
|
40
21
|
/**
|
|
41
22
|
* Build controller URL from configuration
|
|
42
|
-
* Uses controllerPublicUrl (browser) or controllerUrl (fallback)
|
|
43
|
-
* @returns Controller base URL or null if not configured
|
|
44
23
|
*/
|
|
45
24
|
export declare function getControllerUrl(misoConfig: MisoClientConfig | undefined): string | null;
|
|
46
25
|
/**
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*/
|
|
50
|
-
export { redirectToLogin } from "./data-client-redirect";
|
|
51
|
-
/**
|
|
52
|
-
* Logout user and redirect to controller logout page
|
|
53
|
-
* Re-exported from data-client-redirect for backward compatibility
|
|
26
|
+
* Get client token for requests
|
|
27
|
+
* Checks localStorage cache first, then config, then calls getEnvironmentToken() if needed
|
|
54
28
|
*/
|
|
55
|
-
export
|
|
29
|
+
export declare function getClientToken(misoConfig: MisoClientConfig | undefined, _baseUrl: string, _getEnvironmentToken: () => Promise<string>): Promise<string | null>;
|
|
30
|
+
export { redirectToLogin, logout } from "./data-client-redirect";
|
|
56
31
|
/**
|
|
57
32
|
* Get environment token (browser-side)
|
|
58
33
|
* Checks localStorage cache first, then calls backend endpoint if needed
|
|
59
|
-
* Uses clientTokenUri from config or defaults to /api/v1/auth/client-token
|
|
60
|
-
*
|
|
61
|
-
* @returns Client token string
|
|
62
|
-
* @throws Error if token fetch fails
|
|
63
34
|
*/
|
|
64
35
|
export declare function getEnvironmentToken(config: DataClientConfig, misoClient: MisoClient | null): Promise<string>;
|
|
65
36
|
/**
|
|
66
37
|
* Get client token information (browser-side)
|
|
67
|
-
* Extracts application and environment info from client token
|
|
68
|
-
*
|
|
69
|
-
* @returns Client token info or null if token not available
|
|
70
38
|
*/
|
|
71
39
|
export declare function getClientTokenInfo(misoConfig: MisoClientConfig | undefined): ClientTokenInfo | null;
|
|
72
40
|
//# sourceMappingURL=data-client-auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-client-auth.d.ts","sourceRoot":"","sources":["../../src/utils/data-client-auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"data-client-auth.d.ts","sourceRoot":"","sources":["../../src/utils/data-client-auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEhF,OAAO,EAA0B,eAAe,EAAE,MAAM,eAAe,CAAC;AAOxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;GAEG;AACH,wBAAgB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAQ5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,UAAU,GAAG,IAAI,EAC7B,UAAU,EAAE,gBAAgB,GAAG,SAAS,GACvC,OAAO,CA2BT;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,SAAS,CAAC,EAAE,MAAM,EAAE,EACpB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,EAC9B,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGxF;AAwCD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,gBAAgB,GAAG,SAAS,EACxC,QAAQ,EAAE,MAAM,EAChB,oBAAoB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAC1C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsCxB;AAGD,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEjE;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,UAAU,GAAG,IAAI,GAC5B,OAAO,CAAC,MAAM,CAAC,CA8FjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,gBAAgB,GAAG,SAAS,GAAG,eAAe,GAAG,IAAI,CAUnG"}
|