@pitininja/envious-typebox 6.0.0-beta5 → 6.0.0-beta8
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/dist/core/src/error.d.ts +28 -0
- package/dist/core/src/error.js +36 -0
- package/dist/core/src/error.js.map +1 -0
- package/dist/core/src/index.d.ts +9 -0
- package/dist/core/src/index.js +31 -0
- package/dist/core/src/index.js.map +1 -0
- package/dist/resolvers/typebox/src/index.js +15 -15
- package/dist/resolvers/typebox/src/index.js.map +1 -1
- package/package.json +3 -2
- package/dist/common/error.d.ts +0 -21
- package/dist/common/error.js +0 -26
- package/dist/common/error.js.map +0 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type EnviousErrorVariable = {
|
|
2
|
+
name: string;
|
|
3
|
+
messages: string[];
|
|
4
|
+
};
|
|
5
|
+
type EnviousErrorOptions<T> = {
|
|
6
|
+
message?: string;
|
|
7
|
+
} & ({
|
|
8
|
+
variables?: never;
|
|
9
|
+
transform?: never;
|
|
10
|
+
resolverErrors?: never;
|
|
11
|
+
} | {
|
|
12
|
+
variables: EnviousErrorVariable[];
|
|
13
|
+
transform?: never;
|
|
14
|
+
resolverErrors?: never;
|
|
15
|
+
} | {
|
|
16
|
+
variables?: never;
|
|
17
|
+
transform: (resolverError: T) => {
|
|
18
|
+
name: string;
|
|
19
|
+
message: string;
|
|
20
|
+
};
|
|
21
|
+
resolverErrors: T[];
|
|
22
|
+
});
|
|
23
|
+
export declare class EnviousError<T> extends Error {
|
|
24
|
+
variables: EnviousErrorVariable[];
|
|
25
|
+
constructor({ message, variables, transform, resolverErrors }: EnviousErrorOptions<T>);
|
|
26
|
+
private resolverErrorsToErrorVariables;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EnviousError = void 0;
|
|
4
|
+
class EnviousError extends Error {
|
|
5
|
+
variables;
|
|
6
|
+
constructor({ message = 'Invalid environment variables', variables, transform, resolverErrors }) {
|
|
7
|
+
super(message);
|
|
8
|
+
if (variables) {
|
|
9
|
+
this.variables = variables;
|
|
10
|
+
}
|
|
11
|
+
else if (transform && resolverErrors) {
|
|
12
|
+
this.variables = this.resolverErrorsToErrorVariables({
|
|
13
|
+
transform,
|
|
14
|
+
resolverErrors
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
this.variables = [];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
resolverErrorsToErrorVariables({ transform, resolverErrors }) {
|
|
22
|
+
const variables = [];
|
|
23
|
+
const validationErrorsMap = new Map();
|
|
24
|
+
for (const resolverError of resolverErrors) {
|
|
25
|
+
const { name, message } = transform(resolverError);
|
|
26
|
+
const errorMessages = validationErrorsMap.get(name);
|
|
27
|
+
validationErrorsMap.set(name, [...(errorMessages ?? []), message]);
|
|
28
|
+
}
|
|
29
|
+
for (const [name, messages] of validationErrorsMap.entries()) {
|
|
30
|
+
variables.push({ name, messages });
|
|
31
|
+
}
|
|
32
|
+
return variables;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.EnviousError = EnviousError;
|
|
36
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../../core/src/error.ts"],"names":[],"mappings":";;;AAoCA,kBAA6B,SAAQ,KAAK;IACtC,SAAS,CAAyB;IAElC,YAAY,EACR,OAAO,GAAG,+BAA+B,EACzC,SAAS,EACT,SAAS,EACT,cAAc,EACO,EAAE;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC/B,CAAC;aAAM,IAAI,SAAS,IAAI,cAAc,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,8BAA8B,CAAC;gBACjD,SAAS;gBACT,cAAc;aACjB,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACxB,CAAC;IAAA,CACJ;IAEO,8BAA8B,CAAI,EACtC,SAAS,EACT,cAAc,EACyB,EAAE;QACzC,MAAM,SAAS,GAA2B,EAAE,CAAC;QAC7C,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAoB,CAAC;QACxD,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;YACzC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;YACnD,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpD,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACvE,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3D,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,SAAS,CAAC;IAAA,CACpB;CACJ"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { EnviousError } from './error';
|
|
2
|
+
export { EnviousError };
|
|
3
|
+
type EnviousResolver<T> = (env: NodeJS.ProcessEnv) => T;
|
|
4
|
+
export type EnviousOptions<T> = {
|
|
5
|
+
resolver: EnviousResolver<T>;
|
|
6
|
+
logErrors?: boolean;
|
|
7
|
+
logger?: (message: string) => void;
|
|
8
|
+
};
|
|
9
|
+
export declare const envious: <T>({ resolver, logErrors, logger }: EnviousOptions<T>) => T;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.envious = exports.EnviousError = void 0;
|
|
4
|
+
const error_1 = require("./error");
|
|
5
|
+
Object.defineProperty(exports, "EnviousError", { enumerable: true, get: function () { return error_1.EnviousError; } });
|
|
6
|
+
const logErrorVariables = (variables, logger) => {
|
|
7
|
+
// biome-ignore lint/suspicious/noConsole: console default is the default logger here
|
|
8
|
+
const log = logger ?? console.error;
|
|
9
|
+
log('[Envious] Environment validation failed !');
|
|
10
|
+
for (const { name, messages } of variables) {
|
|
11
|
+
log(` - ${name} : ${messages.join(', ')}`);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
const envious = ({ resolver, logErrors, logger }) => {
|
|
15
|
+
try {
|
|
16
|
+
return resolver(process.env);
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
if (err instanceof error_1.EnviousError) {
|
|
20
|
+
if (logErrors) {
|
|
21
|
+
logErrorVariables(err.variables, logger);
|
|
22
|
+
}
|
|
23
|
+
throw err;
|
|
24
|
+
}
|
|
25
|
+
throw new error_1.EnviousError({
|
|
26
|
+
message: `Unexpected error while parsing environment variables${err instanceof Error ? ` : ${err.message}` : ''}`
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
exports.envious = envious;
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../core/src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkE;6FAAzD,oBAAY;AAYrB,MAAM,iBAAiB,GAAG,CACtB,SAAiC,EACjC,MAAkC,EACpC,EAAE,CAAC;IACD,qFAAqF;IACrF,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC;IACpC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACjD,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,SAAS,EAAE,CAAC;QACzC,GAAG,CAAC,OAAO,IAAI,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;AAAA,CACJ,CAAC;AAEK,MAAM,OAAO,GAAG,CAAI,EACvB,QAAQ,EACR,SAAS,EACT,MAAM,EACU,EAAE,EAAE,CAAC;IACrB,IAAI,CAAC;QACD,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACpB,IAAI,GAAG,YAAY,oBAAY,EAAE,CAAC;YAC9B,IAAI,SAAS,EAAE,CAAC;gBACZ,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,GAAG,CAAC;QACd,CAAC;QACD,MAAM,IAAI,oBAAY,CAAC;YACnB,OAAO,EAAE,uDAAuD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;SACpH,CAAC,CAAC;IACP,CAAC;AAAA,CACJ,CAAC;AAlBW,QAAA,OAAO,GAAP,OAAO,CAkBlB"}
|
|
@@ -37,30 +37,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.typeboxResolver = void 0;
|
|
40
|
+
const envious_1 = require("@pitininja/envious");
|
|
40
41
|
const format_1 = __importDefault(require("typebox/format"));
|
|
41
42
|
const value_1 = __importStar(require("typebox/value"));
|
|
42
|
-
const error_1 = require("../../../common/error");
|
|
43
43
|
const setTypeboxFormats = (formats) => {
|
|
44
44
|
for (const [name, format] of Object.entries(formats)) {
|
|
45
45
|
format_1.default.Set(name, format instanceof RegExp ? (val) => format.test(val) : format);
|
|
46
46
|
}
|
|
47
47
|
};
|
|
48
|
-
const typeboxErrorsToEnviousErrors = (typeboxErrors) => {
|
|
49
|
-
return (0, error_1.resolverErrorsToEnviousErrors)({
|
|
50
|
-
resolverErrors: typeboxErrors,
|
|
51
|
-
transform: (typeboxError) => {
|
|
52
|
-
const { instancePath, message } = typeboxError;
|
|
53
|
-
return { name: instancePath.replace(/^\//, ''), message };
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
};
|
|
57
48
|
function checkIfObject(val) {
|
|
58
49
|
if (!val || typeof val !== 'object') {
|
|
59
|
-
throw new
|
|
50
|
+
throw new envious_1.EnviousError({
|
|
60
51
|
message: 'Could not parse environment variables'
|
|
61
52
|
});
|
|
62
53
|
}
|
|
63
54
|
}
|
|
55
|
+
const transformTypeboxError = (typeboxError) => {
|
|
56
|
+
const { instancePath, message } = typeboxError;
|
|
57
|
+
return {
|
|
58
|
+
name: instancePath.replace(/^\//, ''),
|
|
59
|
+
message
|
|
60
|
+
};
|
|
61
|
+
};
|
|
64
62
|
const typeboxResolver = ({ schema, formats }) => {
|
|
65
63
|
return (env) => {
|
|
66
64
|
try {
|
|
@@ -77,8 +75,9 @@ const typeboxResolver = ({ schema, formats }) => {
|
|
|
77
75
|
checkIfObject(converted);
|
|
78
76
|
const errors = value_1.default.Errors(schema, { ...converted });
|
|
79
77
|
if (errors.length) {
|
|
80
|
-
throw new
|
|
81
|
-
|
|
78
|
+
throw new envious_1.EnviousError({
|
|
79
|
+
resolverErrors: errors,
|
|
80
|
+
transform: transformTypeboxError
|
|
82
81
|
});
|
|
83
82
|
}
|
|
84
83
|
return value_1.default.Repair({
|
|
@@ -88,8 +87,9 @@ const typeboxResolver = ({ schema, formats }) => {
|
|
|
88
87
|
}
|
|
89
88
|
catch (err) {
|
|
90
89
|
if (err instanceof value_1.AssertError) {
|
|
91
|
-
throw new
|
|
92
|
-
|
|
90
|
+
throw new envious_1.EnviousError({
|
|
91
|
+
resolverErrors: err.cause.errors,
|
|
92
|
+
transform: transformTypeboxError
|
|
93
93
|
});
|
|
94
94
|
}
|
|
95
95
|
throw err;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkD;AAGlD,4DAAoC;AACpC,uDAAmD;AAenD,MAAM,iBAAiB,GAAG,CAAC,OAA8B,EAAE,EAAE,CAAC;IAC1D,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,gBAAM,CAAC,GAAG,CACN,IAAI,EACJ,MAAM,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAChE,CAAC;IACN,CAAC;AAAA,CACJ,CAAC;AAEF,SAAS,aAAa,CAAC,GAAY,EAAyB;IACxD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,sBAAY,CAAC;YACnB,OAAO,EAAE,uCAAuC;SACnD,CAAC,CAAC;IACP,CAAC;AAAA,CACJ;AAED,MAAM,qBAAqB,GAAG,CAAC,YAAuC,EAAE,EAAE,CAAC;IACvE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;IAC/C,OAAO;QACH,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACrC,OAAO;KACV,CAAC;AAAA,CACL,CAAC;AAEK,MAAM,eAAe,GAAG,CAAoB,EAC/C,MAAM,EACN,OAAO,EACwB,EAA6B,EAAE,CAAC;IAC/D,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACZ,IAAI,CAAC;YACD,IAAI,OAAO,EAAE,CAAC;gBACV,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;YACD,MAAM,SAAS,GAAG,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnC,yHAAyH;YACzH,MAAM,OAAO,GAAG,eAAK,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC/C,aAAa,CAAC,OAAO,CAAC,CAAC;YACvB,MAAM,SAAS,GAAG,eAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;YACxD,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,MAAM,SAAS,GAAG,eAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;YAC1D,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,MAAM,MAAM,GAAG,eAAK,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;YACtD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,IAAI,sBAAY,CAAC;oBACnB,cAAc,EAAE,MAAM;oBACtB,SAAS,EAAE,qBAAqB;iBACnC,CAAC,CAAC;YACP,CAAC;YACD,OAAO,eAAK,CAAC,MAAM,CACf;gBACI,GAAG,MAAM;gBACT,oBAAoB,EAAE,KAAK;aAC9B,EACD,SAAS,CACZ,CAAC;QACN,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACpB,IAAI,GAAG,YAAY,mBAAW,EAAE,CAAC;gBAC7B,MAAM,IAAI,sBAAY,CAAC;oBACnB,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;oBAChC,SAAS,EAAE,qBAAqB;iBACnC,CAAC,CAAC;YACP,CAAC;YACD,MAAM,GAAG,CAAC;QACd,CAAC;IAAA,CACJ,CAAC;AAAA,CACL,CAAC;AAzCW,QAAA,eAAe,GAAf,eAAe,CAyC1B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pitininja/envious-typebox",
|
|
3
|
-
"version": "6.0.0-
|
|
3
|
+
"version": "6.0.0-beta8",
|
|
4
4
|
"license": "AGPL-3.0-or-later",
|
|
5
5
|
"homepage": "https://codeberg.org/pitininja/envious",
|
|
6
6
|
"repository": {
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"build": "npx tsgo --build --clean tsconfig.json && npx tsgo -b ./tsconfig.json"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"
|
|
23
|
+
"@pitininja/envious": "^6.0.0-0",
|
|
24
|
+
"typebox": "^1.0.0"
|
|
24
25
|
}
|
|
25
26
|
}
|
package/dist/common/error.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export type EnviousErrorVariable = {
|
|
2
|
-
name: string;
|
|
3
|
-
messages: string[];
|
|
4
|
-
};
|
|
5
|
-
type EnviousErrorOptions = {
|
|
6
|
-
message?: string;
|
|
7
|
-
variables?: EnviousErrorVariable[];
|
|
8
|
-
};
|
|
9
|
-
export declare class EnviousError extends Error {
|
|
10
|
-
variables: EnviousErrorVariable[];
|
|
11
|
-
constructor({ message, variables }: EnviousErrorOptions);
|
|
12
|
-
}
|
|
13
|
-
type ResolverErrorsToEnviousErrorsOptions<T> = {
|
|
14
|
-
transform: (resolverError: T) => {
|
|
15
|
-
name: string;
|
|
16
|
-
message: string;
|
|
17
|
-
};
|
|
18
|
-
resolverErrors: T[];
|
|
19
|
-
};
|
|
20
|
-
export declare const resolverErrorsToEnviousErrors: <T>({ transform, resolverErrors }: ResolverErrorsToEnviousErrorsOptions<T>) => EnviousErrorVariable[];
|
|
21
|
-
export {};
|
package/dist/common/error.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolverErrorsToEnviousErrors = exports.EnviousError = void 0;
|
|
4
|
-
class EnviousError extends Error {
|
|
5
|
-
variables;
|
|
6
|
-
constructor({ message = 'Invalid environment variables', variables = [] }) {
|
|
7
|
-
super(message);
|
|
8
|
-
this.variables = variables;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
exports.EnviousError = EnviousError;
|
|
12
|
-
const resolverErrorsToEnviousErrors = ({ transform, resolverErrors }) => {
|
|
13
|
-
const enviousErrors = [];
|
|
14
|
-
const validationErrorsMap = new Map();
|
|
15
|
-
for (const resolverError of resolverErrors) {
|
|
16
|
-
const { name, message } = transform(resolverError);
|
|
17
|
-
const errorMessages = validationErrorsMap.get(name);
|
|
18
|
-
validationErrorsMap.set(name, [...(errorMessages ?? []), message]);
|
|
19
|
-
}
|
|
20
|
-
for (const [name, messages] of validationErrorsMap.entries()) {
|
|
21
|
-
enviousErrors.push({ name, messages });
|
|
22
|
-
}
|
|
23
|
-
return enviousErrors;
|
|
24
|
-
};
|
|
25
|
-
exports.resolverErrorsToEnviousErrors = resolverErrorsToEnviousErrors;
|
|
26
|
-
//# sourceMappingURL=error.js.map
|
package/dist/common/error.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../common/error.ts"],"names":[],"mappings":";;;AAUA,kBAA0B,SAAQ,KAAK;IACnC,SAAS,CAAyB;IAClC,YAAY,EACR,OAAO,GAAG,+BAA+B,EACzC,SAAS,GAAG,EAAE,EACI,EAAE;QACpB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAAA,CAC9B;CACJ;;AAUM,MAAM,6BAA6B,GAAG,CAAI,EAC7C,SAAS,EACT,cAAc,EACwB,EAAE,EAAE,CAAC;IAC3C,MAAM,aAAa,GAA2B,EAAE,CAAC;IACjD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAoB,CAAC;IACxD,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;QACzC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpD,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3D,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,aAAa,CAAC;AAAA,CACxB,CAAC;AAfW,QAAA,6BAA6B,GAA7B,6BAA6B,CAexC"}
|