fragment-ts 1.0.34 → 1.0.35
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/API.md +248 -38
- package/DOCS.md +327 -63
- package/NewCLIGENERATECOMMANDS.txt +5 -0
- package/README.md +168 -3
- package/USAGE.md +395 -2
- package/dist/cli/commands/build.command.d.ts.map +1 -1
- package/dist/cli/commands/build.command.js +20 -8
- package/dist/cli/commands/build.command.js.map +1 -1
- package/dist/cli/commands/diagnostics.command.d.ts +1 -2
- package/dist/cli/commands/diagnostics.command.d.ts.map +1 -1
- package/dist/cli/commands/diagnostics.command.js +37 -23
- package/dist/cli/commands/diagnostics.command.js.map +1 -1
- package/dist/cli/commands/generate.command.d.ts +5 -1
- package/dist/cli/commands/generate.command.d.ts.map +1 -1
- package/dist/cli/commands/generate.command.js +171 -39
- package/dist/cli/commands/generate.command.js.map +1 -1
- package/dist/cli/commands/init.command.d.ts.map +1 -1
- package/dist/cli/commands/init.command.js +98 -28
- package/dist/cli/commands/init.command.js.map +1 -1
- package/dist/cli/commands/migrate.command.d.ts +10 -17
- package/dist/cli/commands/migrate.command.d.ts.map +1 -1
- package/dist/cli/commands/migrate.command.js +133 -170
- package/dist/cli/commands/migrate.command.js.map +1 -1
- package/dist/cli/commands/serve.command.d.ts.map +1 -1
- package/dist/cli/commands/serve.command.js +9 -4
- package/dist/cli/commands/serve.command.js.map +1 -1
- package/dist/cli/commands/test.command.d.ts.map +1 -1
- package/dist/cli/commands/test.command.js +24 -6
- package/dist/cli/commands/test.command.js.map +1 -1
- package/dist/core/scanner/component-scanner.d.ts +12 -0
- package/dist/core/scanner/component-scanner.d.ts.map +1 -1
- package/dist/core/scanner/component-scanner.js +72 -14
- package/dist/core/scanner/component-scanner.js.map +1 -1
- package/dist/shared/config.utils.d.ts +58 -0
- package/dist/shared/config.utils.d.ts.map +1 -0
- package/dist/shared/config.utils.js +137 -0
- package/dist/shared/config.utils.js.map +1 -0
- package/dist/shared/env.utils.d.ts +27 -0
- package/dist/shared/env.utils.d.ts.map +1 -0
- package/dist/shared/env.utils.js +68 -0
- package/dist/shared/env.utils.js.map +1 -0
- package/dist/shared/tsconfig.utils.d.ts +122 -0
- package/dist/shared/tsconfig.utils.d.ts.map +1 -0
- package/dist/shared/tsconfig.utils.js +305 -0
- package/dist/shared/tsconfig.utils.js.map +1 -0
- package/dist/testing/runner.d.ts +9 -1
- package/dist/testing/runner.d.ts.map +1 -1
- package/dist/testing/runner.js +50 -10
- package/dist/testing/runner.js.map +1 -1
- package/dist/typeorm/typeorm-module.d.ts +1 -0
- package/dist/typeorm/typeorm-module.d.ts.map +1 -1
- package/dist/typeorm/typeorm-module.js +193 -85
- package/dist/typeorm/typeorm-module.js.map +1 -1
- package/dist/web/application.d.ts +0 -1
- package/dist/web/application.d.ts.map +1 -1
- package/dist/web/application.js +4 -26
- package/dist/web/application.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/commands/build.command.ts +24 -9
- package/src/cli/commands/diagnostics.command.ts +42 -30
- package/src/cli/commands/generate.command.ts +212 -52
- package/src/cli/commands/init.command.ts +100 -29
- package/src/cli/commands/migrate.command.ts +145 -198
- package/src/cli/commands/serve.command.ts +181 -170
- package/src/cli/commands/test.command.ts +25 -11
- package/src/core/scanner/component-scanner.ts +100 -18
- package/src/shared/config.utils.ts +148 -0
- package/src/shared/env.utils.ts +72 -0
- package/src/shared/tsconfig.utils.ts +360 -0
- package/src/testing/runner.ts +62 -14
- package/src/typeorm/typeorm-module.ts +209 -86
- package/src/web/application.ts +4 -33
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.command.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"serve.command.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"test.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;mBAkBlB,QAAQ;IA8J7B,OAAO,CAAC,MAAM,CAAC,oBAAoB;CA6GpC"}
|
|
@@ -42,6 +42,8 @@ const path = __importStar(require("path"));
|
|
|
42
42
|
const child_process_1 = require("child_process");
|
|
43
43
|
const fs = __importStar(require("fs"));
|
|
44
44
|
const chokidar_1 = __importDefault(require("chokidar"));
|
|
45
|
+
const env_utils_1 = require("../../shared/env.utils");
|
|
46
|
+
const tsconfig_utils_1 = require("../../shared/tsconfig.utils");
|
|
45
47
|
class TestCommand {
|
|
46
48
|
static register(program) {
|
|
47
49
|
program
|
|
@@ -59,6 +61,8 @@ class TestCommand {
|
|
|
59
61
|
static async runTests(options) {
|
|
60
62
|
console.log(chalk_1.default.blue("\n🧪 Running Fragment Tests...\n"));
|
|
61
63
|
const cwd = process.cwd();
|
|
64
|
+
// Use EnvUtils for consistent environment detection
|
|
65
|
+
const isDevMode = env_utils_1.EnvUtils.isDevelopmentMode();
|
|
62
66
|
const hasSource = fs.existsSync(path.join(cwd, "src"));
|
|
63
67
|
const hasDist = fs.existsSync(path.join(cwd, "dist"));
|
|
64
68
|
let useTypeScript;
|
|
@@ -86,14 +90,28 @@ class TestCommand {
|
|
|
86
90
|
pattern = options.pattern.replace(/\.ts$/, ".js") || "**/*.spec.js";
|
|
87
91
|
}
|
|
88
92
|
else {
|
|
89
|
-
// Auto-detect
|
|
90
|
-
if (hasSource) {
|
|
93
|
+
// Auto-detect using same logic as EnvUtils
|
|
94
|
+
if (isDevMode && hasSource) {
|
|
95
|
+
useTypeScript = true;
|
|
96
|
+
mode = "auto-detected development (src/)";
|
|
97
|
+
basePath = "src";
|
|
98
|
+
pattern = options.pattern || "**/*.spec.ts";
|
|
99
|
+
}
|
|
100
|
+
else if (!isDevMode && hasDist) {
|
|
101
|
+
useTypeScript = false;
|
|
102
|
+
mode = "auto-detected production (dist/)";
|
|
103
|
+
basePath = "dist";
|
|
104
|
+
pattern = options.pattern.replace(/\.ts$/, ".js") || "**/*.spec.js";
|
|
105
|
+
}
|
|
106
|
+
else if (hasSource) {
|
|
107
|
+
// Fallback to source if available
|
|
91
108
|
useTypeScript = true;
|
|
92
109
|
mode = "auto-detected development (src/)";
|
|
93
110
|
basePath = "src";
|
|
94
111
|
pattern = options.pattern || "**/*.spec.ts";
|
|
95
112
|
}
|
|
96
113
|
else if (hasDist) {
|
|
114
|
+
// Fallback to dist if available
|
|
97
115
|
useTypeScript = false;
|
|
98
116
|
mode = "auto-detected production (dist/)";
|
|
99
117
|
basePath = "dist";
|
|
@@ -107,15 +125,14 @@ class TestCommand {
|
|
|
107
125
|
console.log(chalk_1.default.gray(` Mode: ${mode}`));
|
|
108
126
|
console.log(chalk_1.default.gray(` Pattern: ${basePath}/${pattern}`));
|
|
109
127
|
// Check if we need to use ts-node for TypeScript files
|
|
110
|
-
const
|
|
111
|
-
const hasTsConfig = fs.existsSync(tsConfigPath);
|
|
128
|
+
const hasTsConfig = tsconfig_utils_1.TsConfigUtils.exists();
|
|
112
129
|
// Create a simple runner script that uses our test runner module
|
|
113
130
|
const scriptContent = this.generateRunnerScript({
|
|
114
131
|
useTypeScript,
|
|
115
132
|
basePath,
|
|
116
133
|
pattern,
|
|
117
134
|
hasTsConfig,
|
|
118
|
-
tsConfigPath,
|
|
135
|
+
tsConfigPath: path.join(cwd, "tsconfig.json"),
|
|
119
136
|
watchMode: options.watch,
|
|
120
137
|
coverage: options.coverage,
|
|
121
138
|
noColor: options.color === false,
|
|
@@ -129,7 +146,8 @@ class TestCommand {
|
|
|
129
146
|
// -----------------------
|
|
130
147
|
if (options.watch) {
|
|
131
148
|
console.log(chalk_1.default.green("\n👀 Watch mode enabled. Listening for changes...\n"));
|
|
132
|
-
const
|
|
149
|
+
const watchPattern = `${basePath}/**/*.spec.${useTypeScript ? "ts" : "js"}`;
|
|
150
|
+
const watcher = chokidar_1.default.watch(watchPattern, {
|
|
133
151
|
ignoreInitial: true,
|
|
134
152
|
});
|
|
135
153
|
const runTests = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.command.js","sourceRoot":"","sources":["../../../src/cli/commands/test.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAA0B;AAC1B,2CAA6B;AAC7B,iDAAsC;AACtC,uCAAyB;AACzB,wDAAgC;
|
|
1
|
+
{"version":3,"file":"test.command.js","sourceRoot":"","sources":["../../../src/cli/commands/test.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,21 @@ export declare class ComponentScanner {
|
|
|
8
8
|
* Scans TypeScript source files (development mode with ts-node/tsx)
|
|
9
9
|
*/
|
|
10
10
|
static scanSource(patterns?: string[]): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Get default scan patterns based on fragment.json configuration
|
|
13
|
+
*/
|
|
14
|
+
private static getDefaultPatterns;
|
|
11
15
|
/**
|
|
12
16
|
* Recursive directory scan (alternative approach)
|
|
13
17
|
*/
|
|
14
18
|
static scanDirectory(dir: string, extensions?: string[]): void;
|
|
19
|
+
/**
|
|
20
|
+
* Auto-scan based on current environment mode
|
|
21
|
+
*/
|
|
22
|
+
static autoScan(): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Environment detection logic (replicated from EnvUtils for independence)
|
|
25
|
+
*/
|
|
26
|
+
private static isDevelopmentMode;
|
|
15
27
|
}
|
|
16
28
|
//# sourceMappingURL=component-scanner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-scanner.d.ts","sourceRoot":"","sources":["../../../src/core/scanner/component-scanner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"component-scanner.d.ts","sourceRoot":"","sources":["../../../src/core/scanner/component-scanner.ts"],"names":[],"mappings":"AAMA,qBAAa,gBAAgB;IAC3B;;;OAGG;WACU,IAAI,CAAC,QAAQ,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA4CzD;;OAEG;WACU,UAAU,CAAC,QAAQ,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAwC/D;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IA8CjC;;OAEG;IACH,MAAM,CAAC,aAAa,CAClB,GAAG,EAAE,MAAM,EACX,UAAU,GAAE,MAAM,EAAmB,GACpC,IAAI;IAuBP;;OAEG;WACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAiBjC"}
|
|
@@ -37,21 +37,20 @@ exports.ComponentScanner = void 0;
|
|
|
37
37
|
const path = __importStar(require("path"));
|
|
38
38
|
const fs = __importStar(require("fs"));
|
|
39
39
|
const glob_1 = require("glob");
|
|
40
|
+
const config_utils_1 = require("../../shared/config.utils");
|
|
41
|
+
const tsconfig_utils_1 = require("../../shared/tsconfig.utils");
|
|
40
42
|
class ComponentScanner {
|
|
41
43
|
/**
|
|
42
44
|
* Scans and imports compiled JS files (production mode)
|
|
43
45
|
* This ensures decorators are executed
|
|
44
46
|
*/
|
|
45
|
-
static async scan(patterns = [
|
|
46
|
-
"dist/**/*.controller.js",
|
|
47
|
-
"dist/**/*.service.js",
|
|
48
|
-
"dist/**/*.repository.js",
|
|
49
|
-
"dist/**/*.entity.js",
|
|
50
|
-
]) {
|
|
47
|
+
static async scan(patterns = []) {
|
|
51
48
|
const cwd = process.cwd();
|
|
49
|
+
// If no patterns provided, use defaults from fragment.json config
|
|
50
|
+
const scanPatterns = patterns.length > 0 ? patterns : this.getDefaultPatterns(false);
|
|
52
51
|
const allFiles = [];
|
|
53
52
|
// Collect all matching files
|
|
54
|
-
for (const pattern of
|
|
53
|
+
for (const pattern of scanPatterns) {
|
|
55
54
|
try {
|
|
56
55
|
const files = await (0, glob_1.glob)(pattern, { cwd, absolute: true });
|
|
57
56
|
allFiles.push(...files);
|
|
@@ -83,15 +82,12 @@ class ComponentScanner {
|
|
|
83
82
|
/**
|
|
84
83
|
* Scans TypeScript source files (development mode with ts-node/tsx)
|
|
85
84
|
*/
|
|
86
|
-
static async scanSource(patterns = [
|
|
87
|
-
"src/**/*.controller.ts",
|
|
88
|
-
"src/**/*.service.ts",
|
|
89
|
-
"src/**/*.repository.ts",
|
|
90
|
-
"src/**/*.entity.ts",
|
|
91
|
-
]) {
|
|
85
|
+
static async scanSource(patterns = []) {
|
|
92
86
|
const cwd = process.cwd();
|
|
87
|
+
// If no patterns provided, use defaults from fragment.json config
|
|
88
|
+
const scanPatterns = patterns.length > 0 ? patterns : this.getDefaultPatterns(true);
|
|
93
89
|
const allFiles = [];
|
|
94
|
-
for (const pattern of
|
|
90
|
+
for (const pattern of scanPatterns) {
|
|
95
91
|
try {
|
|
96
92
|
const files = await (0, glob_1.glob)(pattern, { cwd, absolute: true });
|
|
97
93
|
allFiles.push(...files);
|
|
@@ -118,6 +114,37 @@ class ComponentScanner {
|
|
|
118
114
|
}
|
|
119
115
|
console.log(` ✓ Loaded ${loaded} source file(s)${failed > 0 ? `, ${failed} failed` : ""}`);
|
|
120
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Get default scan patterns based on fragment.json configuration
|
|
119
|
+
*/
|
|
120
|
+
static getDefaultPatterns(useTypeScript) {
|
|
121
|
+
const dbConfig = config_utils_1.ConfigUtils.getDatabaseConfig();
|
|
122
|
+
const patterns = [];
|
|
123
|
+
// Use configured entity paths if available
|
|
124
|
+
if (dbConfig.entities && dbConfig.entities.length > 0) {
|
|
125
|
+
// Convert entity patterns to component patterns
|
|
126
|
+
const entityPatterns = dbConfig.entities.map((p) => p.replace(/\.entity\.[tj]s$/, `.${useTypeScript ? "ts" : "js"}`));
|
|
127
|
+
// Extract base directory and create component patterns
|
|
128
|
+
const baseDirs = new Set();
|
|
129
|
+
entityPatterns.forEach((pattern) => {
|
|
130
|
+
const dir = path.dirname(pattern.replace("/**/*", ""));
|
|
131
|
+
baseDirs.add(dir);
|
|
132
|
+
});
|
|
133
|
+
// Create patterns for all component types
|
|
134
|
+
baseDirs.forEach((baseDir) => {
|
|
135
|
+
patterns.push(`${baseDir}/**/*.controller.${useTypeScript ? "ts" : "js"}`, `${baseDir}/**/*.service.${useTypeScript ? "ts" : "js"}`, `${baseDir}/**/*.repository.${useTypeScript ? "ts" : "js"}`, `${baseDir}/**/*.entity.${useTypeScript ? "ts" : "js"}`);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
// Fallback to default patterns if no config found
|
|
139
|
+
if (patterns.length === 0) {
|
|
140
|
+
const srcDir = useTypeScript
|
|
141
|
+
? tsconfig_utils_1.TsConfigUtils.getRootDir()
|
|
142
|
+
: path.join(process.cwd(), "dist");
|
|
143
|
+
const ext = useTypeScript ? "ts" : "js";
|
|
144
|
+
patterns.push(`${srcDir}/**/*.controller.${ext}`, `${srcDir}/**/*.service.${ext}`, `${srcDir}/**/*.repository.${ext}`, `${srcDir}/**/*.entity.${ext}`);
|
|
145
|
+
}
|
|
146
|
+
return patterns;
|
|
147
|
+
}
|
|
121
148
|
/**
|
|
122
149
|
* Recursive directory scan (alternative approach)
|
|
123
150
|
*/
|
|
@@ -142,6 +169,37 @@ class ComponentScanner {
|
|
|
142
169
|
}
|
|
143
170
|
}
|
|
144
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Auto-scan based on current environment mode
|
|
174
|
+
*/
|
|
175
|
+
static async autoScan() {
|
|
176
|
+
// Detect environment using the same logic as other components
|
|
177
|
+
const isDevMode = this.isDevelopmentMode();
|
|
178
|
+
if (isDevMode) {
|
|
179
|
+
await this.scanSource();
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
await this.scan();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Environment detection logic (replicated from EnvUtils for independence)
|
|
187
|
+
*/
|
|
188
|
+
static isDevelopmentMode() {
|
|
189
|
+
// Check explicit FRAGMENT_DEV_MODE
|
|
190
|
+
if (process.env.FRAGMENT_DEV_MODE !== undefined) {
|
|
191
|
+
return process.env.FRAGMENT_DEV_MODE === "true";
|
|
192
|
+
}
|
|
193
|
+
// Check NODE_ENV
|
|
194
|
+
if (process.env.NODE_ENV) {
|
|
195
|
+
return process.env.NODE_ENV === "development";
|
|
196
|
+
}
|
|
197
|
+
// Check filesystem (src/ vs dist/)
|
|
198
|
+
const cwd = process.cwd();
|
|
199
|
+
const hasSource = fs.existsSync(path.join(cwd, "src"));
|
|
200
|
+
const hasDist = fs.existsSync(path.join(cwd, "dist"));
|
|
201
|
+
return hasSource && (!hasDist || hasSource);
|
|
202
|
+
}
|
|
145
203
|
}
|
|
146
204
|
exports.ComponentScanner = ComponentScanner;
|
|
147
205
|
//# sourceMappingURL=component-scanner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-scanner.js","sourceRoot":"","sources":["../../../src/core/scanner/component-scanner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,uCAAyB;AACzB,+BAA4B;
|
|
1
|
+
{"version":3,"file":"component-scanner.js","sourceRoot":"","sources":["../../../src/core/scanner/component-scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
interface FragmentDatabaseConfig {
|
|
2
|
+
type?: string;
|
|
3
|
+
host?: string;
|
|
4
|
+
port?: number;
|
|
5
|
+
username?: string;
|
|
6
|
+
password?: string;
|
|
7
|
+
database?: string;
|
|
8
|
+
synchronize?: boolean;
|
|
9
|
+
logging?: boolean;
|
|
10
|
+
entities?: string[];
|
|
11
|
+
migrations?: string[];
|
|
12
|
+
subscribers?: string[];
|
|
13
|
+
pool?: any;
|
|
14
|
+
maxQueryExecutionTime?: number;
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
}
|
|
17
|
+
interface FragmentConfig {
|
|
18
|
+
development?: {
|
|
19
|
+
database?: FragmentDatabaseConfig;
|
|
20
|
+
};
|
|
21
|
+
production?: {
|
|
22
|
+
database?: FragmentDatabaseConfig;
|
|
23
|
+
};
|
|
24
|
+
database?: FragmentDatabaseConfig;
|
|
25
|
+
}
|
|
26
|
+
export declare class ConfigUtils {
|
|
27
|
+
private static configCache;
|
|
28
|
+
/**
|
|
29
|
+
* Load and parse fragment.json with caching
|
|
30
|
+
*/
|
|
31
|
+
private static loadConfig;
|
|
32
|
+
/**
|
|
33
|
+
* Interpolate environment variables in config values
|
|
34
|
+
*/
|
|
35
|
+
static interpolateEnvVars(value: any): any;
|
|
36
|
+
/**
|
|
37
|
+
* Get the current database configuration based on environment
|
|
38
|
+
*/
|
|
39
|
+
static getDatabaseConfig(): FragmentDatabaseConfig;
|
|
40
|
+
/**
|
|
41
|
+
* Get a specific database configuration property
|
|
42
|
+
*/
|
|
43
|
+
static getDatabaseProperty<T>(property: string, defaultValue: T): T;
|
|
44
|
+
/**
|
|
45
|
+
* Get the full fragment configuration
|
|
46
|
+
*/
|
|
47
|
+
static getFullConfig(): FragmentConfig;
|
|
48
|
+
/**
|
|
49
|
+
* Check if database feature is enabled
|
|
50
|
+
*/
|
|
51
|
+
static isDatabaseEnabled(): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Clear the configuration cache (useful for testing)
|
|
54
|
+
*/
|
|
55
|
+
static clearCache(): void;
|
|
56
|
+
}
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=config.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.utils.d.ts","sourceRoot":"","sources":["../../src/shared/config.utils.ts"],"names":[],"mappings":"AAKA,UAAU,sBAAsB;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,UAAU,cAAc;IACtB,WAAW,CAAC,EAAE;QACZ,QAAQ,CAAC,EAAE,sBAAsB,CAAC;KACnC,CAAC;IACF,UAAU,CAAC,EAAE;QACX,QAAQ,CAAC,EAAE,sBAAsB,CAAC;KACnC,CAAC;IAEF,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CACnC;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,WAAW,CAA+B;IAEzD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IA2BzB;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG;IAsB1C;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,sBAAsB;IAoBlD;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC;IAOnE;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,cAAc;IAItC;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,OAAO;IAOnC;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI;CAG1B"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ConfigUtils = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const env_utils_1 = require("./env.utils");
|
|
40
|
+
class ConfigUtils {
|
|
41
|
+
/**
|
|
42
|
+
* Load and parse fragment.json with caching
|
|
43
|
+
*/
|
|
44
|
+
static loadConfig() {
|
|
45
|
+
if (this.configCache) {
|
|
46
|
+
return this.configCache;
|
|
47
|
+
}
|
|
48
|
+
const configPath = path.join(process.cwd(), "fragment.json");
|
|
49
|
+
if (!fs.existsSync(configPath)) {
|
|
50
|
+
this.configCache = {};
|
|
51
|
+
return this.configCache;
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const raw = fs.readFileSync(configPath, "utf-8");
|
|
55
|
+
this.configCache = JSON.parse(raw);
|
|
56
|
+
if (!this.configCache) {
|
|
57
|
+
this.configCache = {};
|
|
58
|
+
}
|
|
59
|
+
return this.configCache;
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
console.error("❌ Error loading fragment.json:", error);
|
|
63
|
+
this.configCache = {};
|
|
64
|
+
return this.configCache;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Interpolate environment variables in config values
|
|
69
|
+
*/
|
|
70
|
+
static interpolateEnvVars(value) {
|
|
71
|
+
if (typeof value === "string") {
|
|
72
|
+
return value.replace(/\$\{([^}]+)\}/g, (_, varName) => env_utils_1.EnvUtils.getString(varName) || "");
|
|
73
|
+
}
|
|
74
|
+
if (Array.isArray(value)) {
|
|
75
|
+
return value.map((item) => this.interpolateEnvVars(item));
|
|
76
|
+
}
|
|
77
|
+
if (value !== null && typeof value === "object") {
|
|
78
|
+
const result = {};
|
|
79
|
+
for (const key in value) {
|
|
80
|
+
if (Object.prototype.hasOwnProperty.call(value, key)) {
|
|
81
|
+
result[key] = this.interpolateEnvVars(value[key]);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
return value;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get the current database configuration based on environment
|
|
90
|
+
*/
|
|
91
|
+
static getDatabaseConfig() {
|
|
92
|
+
const config = this.loadConfig();
|
|
93
|
+
const mode = env_utils_1.EnvUtils.getEnvironmentMode();
|
|
94
|
+
// Try environment-specific config first
|
|
95
|
+
if (config[mode]?.database) {
|
|
96
|
+
const interpolated = this.interpolateEnvVars(config[mode].database);
|
|
97
|
+
return interpolated;
|
|
98
|
+
}
|
|
99
|
+
// Fallback to legacy flat structure
|
|
100
|
+
if (config.database) {
|
|
101
|
+
const interpolated = this.interpolateEnvVars(config.database);
|
|
102
|
+
return interpolated;
|
|
103
|
+
}
|
|
104
|
+
// Return empty config if none found
|
|
105
|
+
return {};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Get a specific database configuration property
|
|
109
|
+
*/
|
|
110
|
+
static getDatabaseProperty(property, defaultValue) {
|
|
111
|
+
const dbConfig = this.getDatabaseConfig();
|
|
112
|
+
return (dbConfig[property] !== undefined ? dbConfig[property] : defaultValue);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get the full fragment configuration
|
|
116
|
+
*/
|
|
117
|
+
static getFullConfig() {
|
|
118
|
+
return this.loadConfig();
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Check if database feature is enabled
|
|
122
|
+
*/
|
|
123
|
+
static isDatabaseEnabled() {
|
|
124
|
+
const config = this.loadConfig();
|
|
125
|
+
const mode = env_utils_1.EnvUtils.getEnvironmentMode();
|
|
126
|
+
return !!(config[mode]?.database || config.database);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Clear the configuration cache (useful for testing)
|
|
130
|
+
*/
|
|
131
|
+
static clearCache() {
|
|
132
|
+
this.configCache = null;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
exports.ConfigUtils = ConfigUtils;
|
|
136
|
+
ConfigUtils.configCache = null;
|
|
137
|
+
//# sourceMappingURL=config.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.utils.js","sourceRoot":"","sources":["../../src/shared/config.utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,2CAAuC;AA+BvC,MAAa,WAAW;IAGtB;;OAEG;IACK,MAAM,CAAC,UAAU;QACvB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;QAE7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAEnC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;YACxB,CAAC;YACD,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACvD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,KAAU;QAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,OAAO,CAClB,gBAAgB,EAChB,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,oBAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAClD,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAChD,MAAM,MAAM,GAAQ,EAAE,CAAC;YACvB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;oBACrD,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,oBAAQ,CAAC,kBAAkB,EAAE,CAAC;QAE3C,wCAAwC;QACxC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;YAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;YACpE,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,oCAAoC;QACpC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9D,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,oCAAoC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAI,QAAgB,EAAE,YAAe;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC1C,OAAO,CACL,QAAQ,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAChE,CAAC;IACT,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa;QAClB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,oBAAQ,CAAC,kBAAkB,EAAE,CAAC;QAE3C,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU;QACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;;AAjHH,kCAkHC;AAjHgB,uBAAW,GAA0B,IAAI,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare class EnvUtils {
|
|
2
|
+
/**
|
|
3
|
+
* Get a string environment variable with optional default
|
|
4
|
+
*/
|
|
5
|
+
static getString(key: string, defaultValue?: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Get a boolean environment variable (supports 'true'/'false', '1'/'0')
|
|
8
|
+
*/
|
|
9
|
+
static getBoolean(key: string, defaultValue?: boolean): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Get a number environment variable
|
|
12
|
+
*/
|
|
13
|
+
static getNumber(key: string, defaultValue?: number): number;
|
|
14
|
+
/**
|
|
15
|
+
* Get a parsed JSON environment variable
|
|
16
|
+
*/
|
|
17
|
+
static getJson<T>(key: string, defaultValue: T): T;
|
|
18
|
+
/**
|
|
19
|
+
* Check if running in development mode
|
|
20
|
+
*/
|
|
21
|
+
static isDevelopmentMode(): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Get current environment mode ('development' or 'production')
|
|
24
|
+
*/
|
|
25
|
+
static getEnvironmentMode(): "development" | "production";
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=env.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.utils.d.ts","sourceRoot":"","sources":["../../src/shared/env.utils.ts"],"names":[],"mappings":"AAGA,qBAAa,QAAQ;IACnB;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM;IAK5D;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,OAAe,GAAG,OAAO;IAOtE;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,MAAU,GAAG,MAAM;IAQ/D;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC;IAYlD;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,OAAO;IAcnC;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI,aAAa,GAAG,YAAY;CAG1D"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EnvUtils = void 0;
|
|
4
|
+
class EnvUtils {
|
|
5
|
+
/**
|
|
6
|
+
* Get a string environment variable with optional default
|
|
7
|
+
*/
|
|
8
|
+
static getString(key, defaultValue) {
|
|
9
|
+
const value = process.env[key];
|
|
10
|
+
return value !== undefined ? value : (defaultValue ?? "");
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get a boolean environment variable (supports 'true'/'false', '1'/'0')
|
|
14
|
+
*/
|
|
15
|
+
static getBoolean(key, defaultValue = false) {
|
|
16
|
+
const value = process.env[key];
|
|
17
|
+
if (value === undefined)
|
|
18
|
+
return defaultValue;
|
|
19
|
+
return ["true", "1", "yes", "on"].includes(value.toLowerCase());
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get a number environment variable
|
|
23
|
+
*/
|
|
24
|
+
static getNumber(key, defaultValue = 0) {
|
|
25
|
+
const value = process.env[key];
|
|
26
|
+
if (value === undefined)
|
|
27
|
+
return defaultValue;
|
|
28
|
+
const num = Number(value);
|
|
29
|
+
return isNaN(num) ? defaultValue : num;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get a parsed JSON environment variable
|
|
33
|
+
*/
|
|
34
|
+
static getJson(key, defaultValue) {
|
|
35
|
+
const value = process.env[key];
|
|
36
|
+
if (value === undefined)
|
|
37
|
+
return defaultValue;
|
|
38
|
+
try {
|
|
39
|
+
return JSON.parse(value);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
console.warn(`⚠️ Invalid JSON in env var ${key}, using default`);
|
|
43
|
+
return defaultValue;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Check if running in development mode
|
|
48
|
+
*/
|
|
49
|
+
static isDevelopmentMode() {
|
|
50
|
+
// Check explicit FRAGMENT_DEV_MODE
|
|
51
|
+
if (process.env.FRAGMENT_DEV_MODE !== undefined) {
|
|
52
|
+
return process.env.FRAGMENT_DEV_MODE === "true";
|
|
53
|
+
}
|
|
54
|
+
// Check NODE_ENV
|
|
55
|
+
if (process.env.NODE_ENV) {
|
|
56
|
+
return process.env.NODE_ENV === "development";
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Get current environment mode ('development' or 'production')
|
|
62
|
+
*/
|
|
63
|
+
static getEnvironmentMode() {
|
|
64
|
+
return this.isDevelopmentMode() ? "development" : "production";
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.EnvUtils = EnvUtils;
|
|
68
|
+
//# sourceMappingURL=env.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.utils.js","sourceRoot":"","sources":["../../src/shared/env.utils.ts"],"names":[],"mappings":";;;AAGA,MAAa,QAAQ;IACnB;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,GAAW,EAAE,YAAqB;QACjD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,GAAW,EAAE,eAAwB,KAAK;QAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,YAAY,CAAC;QAE7C,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,GAAW,EAAE,eAAuB,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,YAAY,CAAC;QAE7C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,CAAI,GAAW,EAAE,YAAe;QAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,YAAY,CAAC;QAE7C,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,8BAA8B,GAAG,iBAAiB,CAAC,CAAC;YACjE,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB;QACtB,mCAAmC;QACnC,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YAChD,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,MAAM,CAAC;QAClD,CAAC;QAED,iBAAiB;QACjB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACzB,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC;QAChD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,kBAAkB;QACvB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;IACjE,CAAC;CACF;AApED,4BAoEC"}
|