@goondan/runtime 0.0.3-alpha1
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/config/bundle-loader.d.ts +30 -0
- package/dist/config/bundle-loader.d.ts.map +1 -0
- package/dist/config/bundle-loader.js +504 -0
- package/dist/config/bundle-loader.js.map +1 -0
- package/dist/config/object-ref.d.ts +8 -0
- package/dist/config/object-ref.d.ts.map +1 -0
- package/dist/config/object-ref.js +60 -0
- package/dist/config/object-ref.js.map +1 -0
- package/dist/config/resources.d.ts +18 -0
- package/dist/config/resources.d.ts.map +1 -0
- package/dist/config/resources.js +575 -0
- package/dist/config/resources.js.map +1 -0
- package/dist/config/simple-yaml.d.ts +5 -0
- package/dist/config/simple-yaml.d.ts.map +1 -0
- package/dist/config/simple-yaml.js +250 -0
- package/dist/config/simple-yaml.js.map +1 -0
- package/dist/conversation/state.d.ts +38 -0
- package/dist/conversation/state.d.ts.map +1 -0
- package/dist/conversation/state.js +157 -0
- package/dist/conversation/state.js.map +1 -0
- package/dist/events/runtime-events.d.ts +87 -0
- package/dist/events/runtime-events.d.ts.map +1 -0
- package/dist/events/runtime-events.js +32 -0
- package/dist/events/runtime-events.js.map +1 -0
- package/dist/extension/api-impl.d.ts +28 -0
- package/dist/extension/api-impl.d.ts.map +1 -0
- package/dist/extension/api-impl.js +59 -0
- package/dist/extension/api-impl.js.map +1 -0
- package/dist/extension/api-impl.test.d.ts +2 -0
- package/dist/extension/api-impl.test.d.ts.map +1 -0
- package/dist/extension/api-impl.test.js +97 -0
- package/dist/extension/api-impl.test.js.map +1 -0
- package/dist/extension/index.d.ts +4 -0
- package/dist/extension/index.d.ts.map +1 -0
- package/dist/extension/index.js +4 -0
- package/dist/extension/index.js.map +1 -0
- package/dist/extension/integration.test.d.ts +2 -0
- package/dist/extension/integration.test.d.ts.map +1 -0
- package/dist/extension/integration.test.js +224 -0
- package/dist/extension/integration.test.js.map +1 -0
- package/dist/extension/loader.d.ts +17 -0
- package/dist/extension/loader.d.ts.map +1 -0
- package/dist/extension/loader.js +50 -0
- package/dist/extension/loader.js.map +1 -0
- package/dist/extension/loader.test.d.ts +2 -0
- package/dist/extension/loader.test.d.ts.map +1 -0
- package/dist/extension/loader.test.js +180 -0
- package/dist/extension/loader.test.js.map +1 -0
- package/dist/extension/state-manager.d.ts +21 -0
- package/dist/extension/state-manager.d.ts.map +1 -0
- package/dist/extension/state-manager.js +43 -0
- package/dist/extension/state-manager.js.map +1 -0
- package/dist/extension/state-manager.test.d.ts +2 -0
- package/dist/extension/state-manager.test.d.ts.map +1 -0
- package/dist/extension/state-manager.test.js +100 -0
- package/dist/extension/state-manager.test.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/orchestrator/event-queue.d.ts +15 -0
- package/dist/orchestrator/event-queue.d.ts.map +1 -0
- package/dist/orchestrator/event-queue.js +20 -0
- package/dist/orchestrator/event-queue.js.map +1 -0
- package/dist/orchestrator/orchestrator.d.ts +41 -0
- package/dist/orchestrator/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator/orchestrator.js +409 -0
- package/dist/orchestrator/orchestrator.js.map +1 -0
- package/dist/orchestrator/types.d.ts +72 -0
- package/dist/orchestrator/types.d.ts.map +1 -0
- package/dist/orchestrator/types.js +2 -0
- package/dist/orchestrator/types.js.map +1 -0
- package/dist/pipeline/registry.d.ts +60 -0
- package/dist/pipeline/registry.d.ts.map +1 -0
- package/dist/pipeline/registry.js +362 -0
- package/dist/pipeline/registry.js.map +1 -0
- package/dist/runner/conversation-state.d.ts +8 -0
- package/dist/runner/conversation-state.d.ts.map +1 -0
- package/dist/runner/conversation-state.js +52 -0
- package/dist/runner/conversation-state.js.map +1 -0
- package/dist/runner/index.d.ts +4 -0
- package/dist/runner/index.d.ts.map +1 -0
- package/dist/runner/index.js +18 -0
- package/dist/runner/index.js.map +1 -0
- package/dist/runner/runtime-restart-signal.d.ts +6 -0
- package/dist/runner/runtime-restart-signal.d.ts.map +1 -0
- package/dist/runner/runtime-restart-signal.js +18 -0
- package/dist/runner/runtime-restart-signal.js.map +1 -0
- package/dist/runner/runtime-routing.d.ts +41 -0
- package/dist/runner/runtime-routing.d.ts.map +1 -0
- package/dist/runner/runtime-routing.js +154 -0
- package/dist/runner/runtime-routing.js.map +1 -0
- package/dist/runner/runtime-runner-connector-child.d.ts +2 -0
- package/dist/runner/runtime-runner-connector-child.d.ts.map +1 -0
- package/dist/runner/runtime-runner-connector-child.js +188 -0
- package/dist/runner/runtime-runner-connector-child.js.map +1 -0
- package/dist/runner/runtime-runner-protocol.d.ts +13 -0
- package/dist/runner/runtime-runner-protocol.d.ts.map +1 -0
- package/dist/runner/runtime-runner-protocol.js +14 -0
- package/dist/runner/runtime-runner-protocol.js.map +1 -0
- package/dist/runner/runtime-runner.d.ts +2 -0
- package/dist/runner/runtime-runner.d.ts.map +1 -0
- package/dist/runner/runtime-runner.js +2738 -0
- package/dist/runner/runtime-runner.js.map +1 -0
- package/dist/runner/turn-policy.d.ts +8 -0
- package/dist/runner/turn-policy.d.ts.map +1 -0
- package/dist/runner/turn-policy.js +13 -0
- package/dist/runner/turn-policy.js.map +1 -0
- package/dist/tools/executor.d.ts +29 -0
- package/dist/tools/executor.d.ts.map +1 -0
- package/dist/tools/executor.js +124 -0
- package/dist/tools/executor.js.map +1 -0
- package/dist/tools/naming.d.ts +7 -0
- package/dist/tools/naming.d.ts.map +1 -0
- package/dist/tools/naming.js +31 -0
- package/dist/tools/naming.js.map +1 -0
- package/dist/tools/registry.d.ts +18 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +66 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/types.d.ts +388 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +38 -0
- package/dist/types.js.map +1 -0
- package/dist/workspace/instance-manager.d.ts +19 -0
- package/dist/workspace/instance-manager.d.ts.map +1 -0
- package/dist/workspace/instance-manager.js +72 -0
- package/dist/workspace/instance-manager.js.map +1 -0
- package/dist/workspace/paths.d.ts +28 -0
- package/dist/workspace/paths.d.ts.map +1 -0
- package/dist/workspace/paths.js +108 -0
- package/dist/workspace/paths.js.map +1 -0
- package/dist/workspace/storage.d.ts +45 -0
- package/dist/workspace/storage.d.ts.map +1 -0
- package/dist/workspace/storage.js +377 -0
- package/dist/workspace/storage.js.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { RuntimeResource, ValidationError } from "../types.js";
|
|
2
|
+
export interface BundleLoaderOptions {
|
|
3
|
+
maxFileBytes?: number;
|
|
4
|
+
maxDocumentsPerFile?: number;
|
|
5
|
+
allowedBaseNames?: string[];
|
|
6
|
+
stateRoot?: string;
|
|
7
|
+
loadPackageDependencies?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface BundleLoadResult {
|
|
10
|
+
resources: RuntimeResource[];
|
|
11
|
+
errors: ValidationError[];
|
|
12
|
+
scannedFiles: string[];
|
|
13
|
+
}
|
|
14
|
+
export declare class BundleLoader {
|
|
15
|
+
private readonly maxFileBytes;
|
|
16
|
+
private readonly maxDocumentsPerFile;
|
|
17
|
+
private readonly allowedBaseNames;
|
|
18
|
+
private readonly stateRoot;
|
|
19
|
+
private readonly loadPackageDependencies;
|
|
20
|
+
constructor(options?: BundleLoaderOptions);
|
|
21
|
+
load(bundleDir: string): Promise<BundleLoadResult>;
|
|
22
|
+
loadOrThrow(bundleDir: string): Promise<RuntimeResource[]>;
|
|
23
|
+
private collectBundleFiles;
|
|
24
|
+
private walk;
|
|
25
|
+
private readLocalPackageMeta;
|
|
26
|
+
private loadDependencyResources;
|
|
27
|
+
private loadResourcesFromLocalFiles;
|
|
28
|
+
private loadResourcesFromFile;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=bundle-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-loader.d.ts","sourceRoot":"","sources":["../../src/config/bundle-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAKpE,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AA8CD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAc;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAU;gBAEtC,OAAO,GAAE,mBAAwB;IAQvC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsBlD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;YAUlD,kBAAkB;YAMlB,IAAI;YAgCJ,oBAAoB;YAqBpB,uBAAuB;YAkGvB,2BAA2B;YAiB3B,qBAAqB;CAiEpC"}
|
|
@@ -0,0 +1,504 @@
|
|
|
1
|
+
import { promises as fs } from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { isJsonObject } from "../types.js";
|
|
5
|
+
import { parseYamlDocument, parseYamlDocuments } from "./simple-yaml.js";
|
|
6
|
+
import { toRuntimeResource, validateResources } from "./resources.js";
|
|
7
|
+
const DEFAULT_ALLOWED_BASE_NAMES = [
|
|
8
|
+
"goondan",
|
|
9
|
+
"model",
|
|
10
|
+
"models",
|
|
11
|
+
"agent",
|
|
12
|
+
"agents",
|
|
13
|
+
"tool",
|
|
14
|
+
"tools",
|
|
15
|
+
"extension",
|
|
16
|
+
"extensions",
|
|
17
|
+
"connector",
|
|
18
|
+
"connectors",
|
|
19
|
+
"connection",
|
|
20
|
+
"connections",
|
|
21
|
+
"swarm",
|
|
22
|
+
"swarms",
|
|
23
|
+
"resources",
|
|
24
|
+
];
|
|
25
|
+
const SEMVER_PATTERN = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-.]+)?$/;
|
|
26
|
+
export class BundleLoader {
|
|
27
|
+
maxFileBytes;
|
|
28
|
+
maxDocumentsPerFile;
|
|
29
|
+
allowedBaseNames;
|
|
30
|
+
stateRoot;
|
|
31
|
+
loadPackageDependencies;
|
|
32
|
+
constructor(options = {}) {
|
|
33
|
+
this.maxFileBytes = options.maxFileBytes ?? 1024 * 1024;
|
|
34
|
+
this.maxDocumentsPerFile = options.maxDocumentsPerFile ?? 100;
|
|
35
|
+
this.allowedBaseNames = new Set(options.allowedBaseNames ?? DEFAULT_ALLOWED_BASE_NAMES);
|
|
36
|
+
this.stateRoot = options.stateRoot ?? path.join(os.homedir(), ".goondan");
|
|
37
|
+
this.loadPackageDependencies = options.loadPackageDependencies ?? true;
|
|
38
|
+
}
|
|
39
|
+
async load(bundleDir) {
|
|
40
|
+
const files = await this.collectBundleFiles(bundleDir);
|
|
41
|
+
const errors = [];
|
|
42
|
+
const packageMeta = await this.readLocalPackageMeta(bundleDir, errors);
|
|
43
|
+
const dependencyResult = await this.loadDependencyResources(bundleDir, packageMeta.dependencies, errors);
|
|
44
|
+
const localResources = await this.loadResourcesFromLocalFiles(files, bundleDir, packageMeta.packageName, errors);
|
|
45
|
+
const resources = [...dependencyResult.resources, ...localResources];
|
|
46
|
+
const validationErrors = validateResources(resources);
|
|
47
|
+
errors.push(...validationErrors);
|
|
48
|
+
const scanned = new Set();
|
|
49
|
+
files.forEach((file) => scanned.add(file));
|
|
50
|
+
dependencyResult.scannedFiles.forEach((file) => scanned.add(file));
|
|
51
|
+
return {
|
|
52
|
+
resources,
|
|
53
|
+
errors,
|
|
54
|
+
scannedFiles: [...scanned].sort((left, right) => left.localeCompare(right)),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
async loadOrThrow(bundleDir) {
|
|
58
|
+
const result = await this.load(bundleDir);
|
|
59
|
+
if (result.errors.length > 0) {
|
|
60
|
+
const summary = result.errors.map((error) => `${error.code}@${error.path}: ${error.message}`).join("\n");
|
|
61
|
+
throw new Error(summary);
|
|
62
|
+
}
|
|
63
|
+
return result.resources;
|
|
64
|
+
}
|
|
65
|
+
async collectBundleFiles(bundleDir) {
|
|
66
|
+
const collected = [];
|
|
67
|
+
await this.walk(bundleDir, collected);
|
|
68
|
+
return collected.sort((left, right) => left.localeCompare(right));
|
|
69
|
+
}
|
|
70
|
+
async walk(currentDir, collected) {
|
|
71
|
+
const entries = await fs.readdir(currentDir, { withFileTypes: true });
|
|
72
|
+
for (const entry of entries) {
|
|
73
|
+
const fullPath = path.join(currentDir, entry.name);
|
|
74
|
+
if (entry.isDirectory()) {
|
|
75
|
+
const lowerName = entry.name.toLowerCase();
|
|
76
|
+
if (lowerName === "dist" || lowerName === "node_modules" || lowerName === ".git") {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
await this.walk(fullPath, collected);
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
if (!entry.isFile()) {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
const ext = path.extname(entry.name).toLowerCase();
|
|
86
|
+
if (ext !== ".yaml" && ext !== ".yml") {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
const baseName = path.basename(entry.name, ext).toLowerCase();
|
|
90
|
+
if (!this.allowedBaseNames.has(baseName)) {
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
collected.push(fullPath);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async readLocalPackageMeta(bundleDir, errors) {
|
|
97
|
+
const manifestPath = path.join(bundleDir, "goondan.yaml");
|
|
98
|
+
try {
|
|
99
|
+
const raw = await fs.readFile(manifestPath, "utf8");
|
|
100
|
+
const docs = parseYamlDocuments(raw);
|
|
101
|
+
return parsePackageMeta(docs);
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
if (await existsFile(manifestPath)) {
|
|
105
|
+
errors.push({
|
|
106
|
+
code: "E_CONFIG_PARSE_ERROR",
|
|
107
|
+
message: "goondan.yaml 패키지 문서를 파싱할 수 없습니다.",
|
|
108
|
+
path: "goondan.yaml",
|
|
109
|
+
suggestion: "YAML 문법과 첫 번째 Package 문서를 확인하세요.",
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
dependencies: [],
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
async loadDependencyResources(bundleDir, directDependencies, errors) {
|
|
118
|
+
if (!this.loadPackageDependencies || directDependencies.length === 0) {
|
|
119
|
+
return {
|
|
120
|
+
resources: [],
|
|
121
|
+
scannedFiles: [],
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
const lockfilePath = path.join(bundleDir, "goondan.lock.yaml");
|
|
125
|
+
const lockMap = await readLockfileVersions(lockfilePath);
|
|
126
|
+
const resources = [];
|
|
127
|
+
const scannedFiles = [];
|
|
128
|
+
const queue = [...directDependencies];
|
|
129
|
+
const visited = new Set();
|
|
130
|
+
while (queue.length > 0) {
|
|
131
|
+
const dep = queue.shift();
|
|
132
|
+
if (!dep) {
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
const resolvedVersion = resolveDependencyVersion(dep, lockMap);
|
|
136
|
+
if (!resolvedVersion) {
|
|
137
|
+
errors.push({
|
|
138
|
+
code: "E_CONFIG_PACKAGE_LOCK_MISSING",
|
|
139
|
+
message: `의존성 버전을 lockfile에서 확인할 수 없습니다: ${dep.name}@${dep.version}`,
|
|
140
|
+
path: "goondan.lock.yaml",
|
|
141
|
+
suggestion: "`gdn package install`을 다시 실행해 lockfile을 갱신하세요.",
|
|
142
|
+
});
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
const visitKey = `${dep.name}@${resolvedVersion}`;
|
|
146
|
+
if (visited.has(visitKey)) {
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
visited.add(visitKey);
|
|
150
|
+
const packageRoot = resolveInstalledPackageRoot(this.stateRoot, dep.name, resolvedVersion);
|
|
151
|
+
if (!(await existsFile(packageRoot))) {
|
|
152
|
+
errors.push({
|
|
153
|
+
code: "E_CONFIG_PACKAGE_NOT_INSTALLED",
|
|
154
|
+
message: `설치된 패키지를 찾을 수 없습니다: ${dep.name}@${resolvedVersion}`,
|
|
155
|
+
path: packageRoot,
|
|
156
|
+
suggestion: "`gdn package install`을 실행해 의존 패키지를 설치하세요.",
|
|
157
|
+
});
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
const manifestPath = await findInstalledManifestPath(packageRoot);
|
|
161
|
+
if (!manifestPath) {
|
|
162
|
+
errors.push({
|
|
163
|
+
code: "E_CONFIG_PACKAGE_MANIFEST_MISSING",
|
|
164
|
+
message: `패키지 manifest(goondan.yaml)가 없습니다: ${dep.name}@${resolvedVersion}`,
|
|
165
|
+
path: packageRoot,
|
|
166
|
+
suggestion: "패키지 tarball에 goondan.yaml 또는 dist/goondan.yaml을 포함하세요.",
|
|
167
|
+
});
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
scannedFiles.push(manifestPath);
|
|
171
|
+
const displayPath = `${dep.name}/${toPosix(path.relative(packageRoot, manifestPath))}`;
|
|
172
|
+
const loaded = await this.loadResourcesFromFile(manifestPath, displayPath, dep.name, packageRoot, errors);
|
|
173
|
+
resources.push(...loaded);
|
|
174
|
+
try {
|
|
175
|
+
const raw = await fs.readFile(manifestPath, "utf8");
|
|
176
|
+
const docs = parseYamlDocuments(raw);
|
|
177
|
+
const packageMeta = parsePackageMeta(docs);
|
|
178
|
+
for (const child of packageMeta.dependencies) {
|
|
179
|
+
queue.push(child);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
errors.push({
|
|
184
|
+
code: "E_CONFIG_PARSE_ERROR",
|
|
185
|
+
message: `패키지 문서를 파싱할 수 없습니다: ${dep.name}@${resolvedVersion}`,
|
|
186
|
+
path: displayPath,
|
|
187
|
+
suggestion: "의존 패키지 goondan.yaml의 문법을 확인하세요.",
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
resources,
|
|
193
|
+
scannedFiles,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
async loadResourcesFromLocalFiles(files, bundleDir, packageName, errors) {
|
|
197
|
+
const resources = [];
|
|
198
|
+
for (const file of files) {
|
|
199
|
+
const relativePath = toPosix(path.relative(bundleDir, file) || path.basename(file));
|
|
200
|
+
const loaded = await this.loadResourcesFromFile(file, relativePath, packageName, bundleDir, errors);
|
|
201
|
+
resources.push(...loaded);
|
|
202
|
+
}
|
|
203
|
+
return resources;
|
|
204
|
+
}
|
|
205
|
+
async loadResourcesFromFile(filePath, displayPath, packageName, rootDir, errors) {
|
|
206
|
+
const resources = [];
|
|
207
|
+
try {
|
|
208
|
+
const stat = await fs.stat(filePath);
|
|
209
|
+
if (stat.size > this.maxFileBytes) {
|
|
210
|
+
errors.push({
|
|
211
|
+
code: "E_CONFIG_FILE_TOO_LARGE",
|
|
212
|
+
message: `YAML file exceeds size limit (${this.maxFileBytes} bytes).`,
|
|
213
|
+
path: displayPath,
|
|
214
|
+
suggestion: "YAML 파일을 분할하거나 용량을 줄이세요.",
|
|
215
|
+
});
|
|
216
|
+
return resources;
|
|
217
|
+
}
|
|
218
|
+
const content = await fs.readFile(filePath, "utf8");
|
|
219
|
+
const docs = parseYamlDocuments(content);
|
|
220
|
+
if (docs.length > this.maxDocumentsPerFile) {
|
|
221
|
+
errors.push({
|
|
222
|
+
code: "E_CONFIG_TOO_MANY_DOCUMENTS",
|
|
223
|
+
message: `YAML documents exceed limit (${this.maxDocumentsPerFile}).`,
|
|
224
|
+
path: displayPath,
|
|
225
|
+
suggestion: "문서 수를 줄이거나 파일을 분할하세요.",
|
|
226
|
+
});
|
|
227
|
+
return resources;
|
|
228
|
+
}
|
|
229
|
+
docs.forEach((value, docIndex) => {
|
|
230
|
+
const resource = toRuntimeResource({
|
|
231
|
+
value,
|
|
232
|
+
file: displayPath,
|
|
233
|
+
docIndex,
|
|
234
|
+
packageName,
|
|
235
|
+
rootDir,
|
|
236
|
+
});
|
|
237
|
+
if (!resource) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
if (resource.kind.trim().length === 0) {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
resources.push(resource);
|
|
244
|
+
});
|
|
245
|
+
return resources;
|
|
246
|
+
}
|
|
247
|
+
catch (error) {
|
|
248
|
+
const message = error instanceof Error ? error.message : "Failed to parse YAML";
|
|
249
|
+
errors.push({
|
|
250
|
+
code: "E_CONFIG_PARSE_ERROR",
|
|
251
|
+
message,
|
|
252
|
+
path: displayPath,
|
|
253
|
+
suggestion: "YAML 문법과 들여쓰기를 확인하세요.",
|
|
254
|
+
});
|
|
255
|
+
return resources;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
function toPosix(value) {
|
|
260
|
+
return value.replaceAll(path.sep, "/");
|
|
261
|
+
}
|
|
262
|
+
function parsePackageMeta(docs) {
|
|
263
|
+
const first = docs[0];
|
|
264
|
+
if (!isJsonObject(first)) {
|
|
265
|
+
return { dependencies: [] };
|
|
266
|
+
}
|
|
267
|
+
if (first.kind !== "Package") {
|
|
268
|
+
return { dependencies: [] };
|
|
269
|
+
}
|
|
270
|
+
const metadata = first.metadata;
|
|
271
|
+
const packageName = isJsonObject(metadata) && typeof metadata.name === "string" && metadata.name.length > 0
|
|
272
|
+
? metadata.name
|
|
273
|
+
: undefined;
|
|
274
|
+
const spec = first.spec;
|
|
275
|
+
const dependencies = readDependencies(spec);
|
|
276
|
+
return {
|
|
277
|
+
packageName,
|
|
278
|
+
dependencies,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
function readDependencies(spec) {
|
|
282
|
+
if (!isJsonObject(spec)) {
|
|
283
|
+
return [];
|
|
284
|
+
}
|
|
285
|
+
const depValue = spec.dependencies;
|
|
286
|
+
if (!Array.isArray(depValue)) {
|
|
287
|
+
return [];
|
|
288
|
+
}
|
|
289
|
+
const dependencies = [];
|
|
290
|
+
for (const item of depValue) {
|
|
291
|
+
if (!isJsonObject(item)) {
|
|
292
|
+
continue;
|
|
293
|
+
}
|
|
294
|
+
const name = item.name;
|
|
295
|
+
const version = item.version;
|
|
296
|
+
if (typeof name !== "string" || typeof version !== "string") {
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
if (name.length === 0 || version.length === 0) {
|
|
300
|
+
continue;
|
|
301
|
+
}
|
|
302
|
+
dependencies.push({
|
|
303
|
+
name,
|
|
304
|
+
version,
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
return dependencies;
|
|
308
|
+
}
|
|
309
|
+
async function readLockfileVersions(lockfilePath) {
|
|
310
|
+
const result = new Map();
|
|
311
|
+
if (!(await existsFile(lockfilePath))) {
|
|
312
|
+
return result;
|
|
313
|
+
}
|
|
314
|
+
const raw = await fs.readFile(lockfilePath, "utf8");
|
|
315
|
+
const parsed = parseYamlDocument(raw);
|
|
316
|
+
if (!isJsonObject(parsed)) {
|
|
317
|
+
return result;
|
|
318
|
+
}
|
|
319
|
+
const packages = parsed.packages;
|
|
320
|
+
if (!isJsonObject(packages)) {
|
|
321
|
+
return result;
|
|
322
|
+
}
|
|
323
|
+
for (const key of Object.keys(packages)) {
|
|
324
|
+
const parsedKey = parseLockfileKey(key);
|
|
325
|
+
if (!parsedKey) {
|
|
326
|
+
continue;
|
|
327
|
+
}
|
|
328
|
+
const versions = result.get(parsedKey.name) ?? [];
|
|
329
|
+
versions.push(parsedKey.version);
|
|
330
|
+
result.set(parsedKey.name, versions);
|
|
331
|
+
}
|
|
332
|
+
return result;
|
|
333
|
+
}
|
|
334
|
+
function parseLockfileKey(value) {
|
|
335
|
+
const normalized = trimQuotes(value.trim());
|
|
336
|
+
if (normalized.startsWith("@")) {
|
|
337
|
+
const slash = normalized.indexOf("/");
|
|
338
|
+
if (slash <= 1) {
|
|
339
|
+
return null;
|
|
340
|
+
}
|
|
341
|
+
const secondAt = normalized.indexOf("@", slash + 1);
|
|
342
|
+
if (secondAt <= slash + 1 || secondAt >= normalized.length - 1) {
|
|
343
|
+
return null;
|
|
344
|
+
}
|
|
345
|
+
return {
|
|
346
|
+
name: normalized.slice(0, secondAt),
|
|
347
|
+
version: normalized.slice(secondAt + 1),
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
const at = normalized.lastIndexOf("@");
|
|
351
|
+
if (at <= 0 || at >= normalized.length - 1) {
|
|
352
|
+
return null;
|
|
353
|
+
}
|
|
354
|
+
return {
|
|
355
|
+
name: normalized.slice(0, at),
|
|
356
|
+
version: normalized.slice(at + 1),
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
function trimQuotes(value) {
|
|
360
|
+
if (value.length < 2) {
|
|
361
|
+
return value;
|
|
362
|
+
}
|
|
363
|
+
const first = value[0];
|
|
364
|
+
const last = value[value.length - 1];
|
|
365
|
+
if ((first === '"' && last === '"') || (first === "'" && last === "'")) {
|
|
366
|
+
return value.slice(1, -1);
|
|
367
|
+
}
|
|
368
|
+
return value;
|
|
369
|
+
}
|
|
370
|
+
function resolveDependencyVersion(dep, lockMap) {
|
|
371
|
+
const lockedVersions = lockMap.get(dep.name);
|
|
372
|
+
if (!lockedVersions || lockedVersions.length === 0) {
|
|
373
|
+
if (isExactSemver(dep.version)) {
|
|
374
|
+
return dep.version;
|
|
375
|
+
}
|
|
376
|
+
return undefined;
|
|
377
|
+
}
|
|
378
|
+
if (isExactSemver(dep.version)) {
|
|
379
|
+
if (lockedVersions.includes(dep.version)) {
|
|
380
|
+
return dep.version;
|
|
381
|
+
}
|
|
382
|
+
return undefined;
|
|
383
|
+
}
|
|
384
|
+
if (lockedVersions.length === 1) {
|
|
385
|
+
return lockedVersions[0];
|
|
386
|
+
}
|
|
387
|
+
const sorted = [...lockedVersions].sort(compareSemver);
|
|
388
|
+
return sorted[sorted.length - 1];
|
|
389
|
+
}
|
|
390
|
+
function isExactSemver(value) {
|
|
391
|
+
return parseSemver(value) !== null;
|
|
392
|
+
}
|
|
393
|
+
function compareSemver(left, right) {
|
|
394
|
+
const parsedLeft = parseSemver(left);
|
|
395
|
+
const parsedRight = parseSemver(right);
|
|
396
|
+
if (!parsedLeft || !parsedRight) {
|
|
397
|
+
return left.localeCompare(right);
|
|
398
|
+
}
|
|
399
|
+
if (parsedLeft.major !== parsedRight.major) {
|
|
400
|
+
return parsedLeft.major - parsedRight.major;
|
|
401
|
+
}
|
|
402
|
+
if (parsedLeft.minor !== parsedRight.minor) {
|
|
403
|
+
return parsedLeft.minor - parsedRight.minor;
|
|
404
|
+
}
|
|
405
|
+
if (parsedLeft.patch !== parsedRight.patch) {
|
|
406
|
+
return parsedLeft.patch - parsedRight.patch;
|
|
407
|
+
}
|
|
408
|
+
return comparePrerelease(parsedLeft.prerelease, parsedRight.prerelease);
|
|
409
|
+
}
|
|
410
|
+
function parseSemver(value) {
|
|
411
|
+
const match = value.match(SEMVER_PATTERN);
|
|
412
|
+
if (!match) {
|
|
413
|
+
return null;
|
|
414
|
+
}
|
|
415
|
+
const major = Number(match[1]);
|
|
416
|
+
const minor = Number(match[2]);
|
|
417
|
+
const patch = Number(match[3]);
|
|
418
|
+
const prereleaseValue = match[4];
|
|
419
|
+
if (!Number.isInteger(major) || !Number.isInteger(minor) || !Number.isInteger(patch)) {
|
|
420
|
+
return null;
|
|
421
|
+
}
|
|
422
|
+
const prerelease = typeof prereleaseValue === "string" && prereleaseValue.length > 0 ? prereleaseValue.split(".") : [];
|
|
423
|
+
return {
|
|
424
|
+
major,
|
|
425
|
+
minor,
|
|
426
|
+
patch,
|
|
427
|
+
prerelease,
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
function comparePrerelease(left, right) {
|
|
431
|
+
if (left.length === 0 && right.length === 0) {
|
|
432
|
+
return 0;
|
|
433
|
+
}
|
|
434
|
+
if (left.length === 0) {
|
|
435
|
+
return 1;
|
|
436
|
+
}
|
|
437
|
+
if (right.length === 0) {
|
|
438
|
+
return -1;
|
|
439
|
+
}
|
|
440
|
+
const maxLength = Math.max(left.length, right.length);
|
|
441
|
+
for (let index = 0; index < maxLength; index += 1) {
|
|
442
|
+
const leftPart = left[index];
|
|
443
|
+
const rightPart = right[index];
|
|
444
|
+
if (leftPart === undefined) {
|
|
445
|
+
return -1;
|
|
446
|
+
}
|
|
447
|
+
if (rightPart === undefined) {
|
|
448
|
+
return 1;
|
|
449
|
+
}
|
|
450
|
+
const leftNumeric = /^\d+$/.test(leftPart);
|
|
451
|
+
const rightNumeric = /^\d+$/.test(rightPart);
|
|
452
|
+
if (leftNumeric && rightNumeric) {
|
|
453
|
+
const leftNumber = Number(leftPart);
|
|
454
|
+
const rightNumber = Number(rightPart);
|
|
455
|
+
if (leftNumber !== rightNumber) {
|
|
456
|
+
return leftNumber - rightNumber;
|
|
457
|
+
}
|
|
458
|
+
continue;
|
|
459
|
+
}
|
|
460
|
+
if (leftNumeric) {
|
|
461
|
+
return -1;
|
|
462
|
+
}
|
|
463
|
+
if (rightNumeric) {
|
|
464
|
+
return 1;
|
|
465
|
+
}
|
|
466
|
+
const compared = leftPart.localeCompare(rightPart);
|
|
467
|
+
if (compared !== 0) {
|
|
468
|
+
return compared;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
return 0;
|
|
472
|
+
}
|
|
473
|
+
function resolveInstalledPackageRoot(stateRoot, packageName, version) {
|
|
474
|
+
if (packageName.startsWith("@")) {
|
|
475
|
+
const slash = packageName.indexOf("/");
|
|
476
|
+
if (slash > 1 && slash < packageName.length - 1) {
|
|
477
|
+
const scope = packageName.slice(1, slash);
|
|
478
|
+
const name = packageName.slice(slash + 1);
|
|
479
|
+
return path.join(stateRoot, "packages", scope, name, version);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
return path.join(stateRoot, "packages", packageName, version);
|
|
483
|
+
}
|
|
484
|
+
async function findInstalledManifestPath(packageRoot) {
|
|
485
|
+
const distManifest = path.join(packageRoot, "dist", "goondan.yaml");
|
|
486
|
+
if (await existsFile(distManifest)) {
|
|
487
|
+
return distManifest;
|
|
488
|
+
}
|
|
489
|
+
const rootManifest = path.join(packageRoot, "goondan.yaml");
|
|
490
|
+
if (await existsFile(rootManifest)) {
|
|
491
|
+
return rootManifest;
|
|
492
|
+
}
|
|
493
|
+
return undefined;
|
|
494
|
+
}
|
|
495
|
+
async function existsFile(targetPath) {
|
|
496
|
+
try {
|
|
497
|
+
await fs.stat(targetPath);
|
|
498
|
+
return true;
|
|
499
|
+
}
|
|
500
|
+
catch {
|
|
501
|
+
return false;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
//# sourceMappingURL=bundle-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-loader.js","sourceRoot":"","sources":["../../src/config/bundle-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AA+BtE,MAAM,0BAA0B,GAAG;IACjC,SAAS;IACT,OAAO;IACP,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,WAAW;IACX,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,OAAO;IACP,QAAQ;IACR,WAAW;CACZ,CAAC;AAEF,MAAM,cAAc,GAClB,0GAA0G,CAAC;AAS7G,MAAM,OAAO,YAAY;IACN,YAAY,CAAS;IACrB,mBAAmB,CAAS;IAC5B,gBAAgB,CAAc;IAC9B,SAAS,CAAS;IAClB,uBAAuB,CAAU;IAElD,YAAY,UAA+B,EAAE;QAC3C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC;QACxD,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,IAAI,GAAG,CAAC;QAC9D,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAgB,IAAI,0BAA0B,CAAC,CAAC;QACxF,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;QAC1E,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,IAAI,IAAI,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAiB;QAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACvE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACzG,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAEjH,MAAM,SAAS,GAAG,CAAC,GAAG,gBAAgB,CAAC,SAAS,EAAE,GAAG,cAAc,CAAC,CAAC;QACrE,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;QAEjC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnE,OAAO;YACL,SAAS;YACT,MAAM;YACN,YAAY,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SAC5E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzG,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,SAAiB;QAChD,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACtC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,UAAkB,EAAE,SAAmB;QACxD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC3C,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,cAAc,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;oBACjF,SAAS;gBACX,CAAC;gBACD,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACrC,SAAS;YACX,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACpB,SAAS;YACX,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YACnD,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACtC,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9D,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzC,SAAS;YACX,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,SAAiB,EAAE,MAAyB;QAC7E,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAC1D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACrC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,MAAM,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EAAE,kCAAkC;oBAC3C,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE,kCAAkC;iBAC/C,CAAC,CAAC;YACL,CAAC;YACD,OAAO;gBACL,YAAY,EAAE,EAAE;aACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,uBAAuB,CACnC,SAAiB,EACjB,kBAAuC,EACvC,MAAyB;QAEzB,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrE,OAAO;gBACL,SAAS,EAAE,EAAE;gBACb,YAAY,EAAE,EAAE;aACjB,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACzD,MAAM,SAAS,GAAsB,EAAE,CAAC;QACxC,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,KAAK,GAAwB,CAAC,GAAG,kBAAkB,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,SAAS;YACX,CAAC;YAED,MAAM,eAAe,GAAG,wBAAwB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC/D,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,+BAA+B;oBACrC,OAAO,EAAE,kCAAkC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE;oBACpE,IAAI,EAAE,mBAAmB;oBACzB,UAAU,EAAE,gDAAgD;iBAC7D,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,eAAe,EAAE,CAAC;YAClD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,SAAS;YACX,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEtB,MAAM,WAAW,GAAG,2BAA2B,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YAC3F,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,gCAAgC;oBACtC,OAAO,EAAE,uBAAuB,GAAG,CAAC,IAAI,IAAI,eAAe,EAAE;oBAC7D,IAAI,EAAE,WAAW;oBACjB,UAAU,EAAE,2CAA2C;iBACxD,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAAC,WAAW,CAAC,CAAC;YAClE,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,mCAAmC;oBACzC,OAAO,EAAE,qCAAqC,GAAG,CAAC,IAAI,IAAI,eAAe,EAAE;oBAC3E,IAAI,EAAE,WAAW;oBACjB,UAAU,EAAE,wDAAwD;iBACrE,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,MAAM,WAAW,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;YACvF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAC7C,YAAY,EACZ,WAAW,EACX,GAAG,CAAC,IAAI,EACR,WAAW,EACX,MAAM,CACP,CAAC;YACF,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;YAE1B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBACpD,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBACrC,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBAC3C,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;oBAC7C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EAAE,uBAAuB,GAAG,CAAC,IAAI,IAAI,eAAe,EAAE;oBAC7D,IAAI,EAAE,WAAW;oBACjB,UAAU,EAAE,iCAAiC;iBAC9C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO;YACL,SAAS;YACT,YAAY;SACb,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,2BAA2B,CACvC,KAAe,EACf,SAAiB,EACjB,WAA+B,EAC/B,MAAyB;QAEzB,MAAM,SAAS,GAAsB,EAAE,CAAC;QAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACpF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YACpG,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,qBAAqB,CACjC,QAAgB,EAChB,WAAmB,EACnB,WAA+B,EAC/B,OAAe,EACf,MAAyB;QAEzB,MAAM,SAAS,GAAsB,EAAE,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,yBAAyB;oBAC/B,OAAO,EAAE,iCAAiC,IAAI,CAAC,YAAY,UAAU;oBACrE,IAAI,EAAE,WAAW;oBACjB,UAAU,EAAE,0BAA0B;iBACvC,CAAC,CAAC;gBACH,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3C,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,6BAA6B;oBACnC,OAAO,EAAE,gCAAgC,IAAI,CAAC,mBAAmB,IAAI;oBACrE,IAAI,EAAE,WAAW;oBACjB,UAAU,EAAE,uBAAuB;iBACpC,CAAC,CAAC;gBACH,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;gBAC/B,MAAM,QAAQ,GAAG,iBAAiB,CAAC;oBACjC,KAAK;oBACL,IAAI,EAAE,WAAW;oBACjB,QAAQ;oBACR,WAAW;oBACX,OAAO;iBACR,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO;gBACT,CAAC;gBAED,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtC,OAAO;gBACT,CAAC;gBAED,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC;YAChF,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,sBAAsB;gBAC5B,OAAO;gBACP,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE,uBAAuB;aACpC,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;CACF;AAED,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAe;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,MAAM,WAAW,GACf,YAAY,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;QACrF,CAAC,CAAC,QAAQ,CAAC,IAAI;QACf,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAE5C,OAAO;QACL,WAAW;QACX,YAAY;KACb,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa;IACrC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,YAAY,GAAwB,EAAE,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC5D,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,SAAS;QACX,CAAC;QACD,YAAY,CAAC,IAAI,CAAC;YAChB,IAAI;YACJ,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,YAAoB;IACtD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAE5C,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACpD,IAAI,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;YACnC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;SACxC,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7B,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACvE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAsB,EAAE,OAA8B;IACtF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAC,OAAO,CAAC;QACrB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,OAAO,GAAG,CAAC,OAAO,CAAC;QACrB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACrC,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,KAAa;IAChD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC;QAC3C,OAAO,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IAC9C,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC;QAC3C,OAAO,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IAC9C,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC;QAC3C,OAAO,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IAC9C,CAAC;IAED,OAAO,iBAAiB,CAAC,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACrF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GACd,OAAO,eAAe,KAAK,QAAQ,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtG,OAAO;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAc,EAAE,KAAe;IACxD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAE/B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7C,IAAI,WAAW,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;gBAC/B,OAAO,UAAU,GAAG,WAAW,CAAC;YAClC,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,2BAA2B,CAAC,SAAiB,EAAE,WAAmB,EAAE,OAAe;IAC1F,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,WAAmB;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IACpE,IAAI,MAAM,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC5D,IAAI,MAAM,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,UAAkB;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ObjectRef, ObjectRefLike, RefItem, RefOrSelector, SelectorWithOverrides } from "../types.js";
|
|
2
|
+
export declare function normalizeObjectRef(ref: ObjectRefLike): ObjectRef;
|
|
3
|
+
export declare function objectRefToString(ref: ObjectRefLike): string;
|
|
4
|
+
export declare function isRefItem(value: unknown): value is RefItem;
|
|
5
|
+
export declare function isSelectorWithOverrides(value: unknown): value is SelectorWithOverrides;
|
|
6
|
+
export declare function normalizeRefOrSelector(value: RefOrSelector): ObjectRef[];
|
|
7
|
+
export declare function isObjectRefLikeString(value: string): boolean;
|
|
8
|
+
//# sourceMappingURL=object-ref.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-ref.d.ts","sourceRoot":"","sources":["../../src/config/object-ref.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,OAAO,EACP,aAAa,EACb,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAGrB,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,CA2BhE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAG5D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAM1D;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,qBAAqB,CAMtF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,EAAE,CAcxE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAO5D"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { isJsonObject, isObjectRef as isObjectRefTypeGuard } from "../types.js";
|
|
2
|
+
export function normalizeObjectRef(ref) {
|
|
3
|
+
if (typeof ref === "string") {
|
|
4
|
+
const slashIndex = ref.indexOf("/");
|
|
5
|
+
if (slashIndex <= 0 || slashIndex >= ref.length - 1) {
|
|
6
|
+
throw new Error(`Invalid ObjectRef string: ${ref}`);
|
|
7
|
+
}
|
|
8
|
+
const kind = ref.slice(0, slashIndex);
|
|
9
|
+
const name = ref.slice(slashIndex + 1);
|
|
10
|
+
if (name.includes("/")) {
|
|
11
|
+
throw new Error(`Invalid ObjectRef string (multiple slashes): ${ref}`);
|
|
12
|
+
}
|
|
13
|
+
return { kind, name };
|
|
14
|
+
}
|
|
15
|
+
if (!isObjectRefTypeGuard(ref)) {
|
|
16
|
+
throw new Error("Invalid ObjectRef object");
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
kind: ref.kind,
|
|
20
|
+
name: ref.name,
|
|
21
|
+
package: ref.package,
|
|
22
|
+
apiVersion: ref.apiVersion,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export function objectRefToString(ref) {
|
|
26
|
+
const normalized = normalizeObjectRef(ref);
|
|
27
|
+
return `${normalized.kind}/${normalized.name}`;
|
|
28
|
+
}
|
|
29
|
+
export function isRefItem(value) {
|
|
30
|
+
if (!isJsonObject(value)) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
return "ref" in value;
|
|
34
|
+
}
|
|
35
|
+
export function isSelectorWithOverrides(value) {
|
|
36
|
+
if (!isJsonObject(value)) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
return "selector" in value && isJsonObject(value.selector);
|
|
40
|
+
}
|
|
41
|
+
export function normalizeRefOrSelector(value) {
|
|
42
|
+
if (typeof value === "string") {
|
|
43
|
+
return [normalizeObjectRef(value)];
|
|
44
|
+
}
|
|
45
|
+
if (isObjectRefTypeGuard(value)) {
|
|
46
|
+
return [normalizeObjectRef(value)];
|
|
47
|
+
}
|
|
48
|
+
if (isRefItem(value)) {
|
|
49
|
+
return [normalizeObjectRef(value.ref)];
|
|
50
|
+
}
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
export function isObjectRefLikeString(value) {
|
|
54
|
+
const slashIndex = value.indexOf("/");
|
|
55
|
+
if (slashIndex <= 0 || slashIndex >= value.length - 1) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
return value.indexOf("/", slashIndex + 1) < 0;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=object-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-ref.js","sourceRoot":"","sources":["../../src/config/object-ref.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { KnownKind, RuntimeResource, ValidationError } from "../types.js";
|
|
2
|
+
export declare const LOCAL_PACKAGE_SCOPE = "__local__";
|
|
3
|
+
export declare function toScopedResourceIdentity(packageName: string, kind: string, name: string): string;
|
|
4
|
+
export declare function validateResources(resources: RuntimeResource[]): ValidationError[];
|
|
5
|
+
export declare function toRuntimeResource(input: {
|
|
6
|
+
value: unknown;
|
|
7
|
+
file: string;
|
|
8
|
+
docIndex: number;
|
|
9
|
+
packageName?: string;
|
|
10
|
+
rootDir?: string;
|
|
11
|
+
}): RuntimeResource | null;
|
|
12
|
+
export interface ResourceIndex {
|
|
13
|
+
byIdentity: Map<string, RuntimeResource>;
|
|
14
|
+
byScopedIdentity: Map<string, RuntimeResource>;
|
|
15
|
+
byKind: Map<KnownKind, RuntimeResource[]>;
|
|
16
|
+
}
|
|
17
|
+
export declare function buildResourceIndex(resources: RuntimeResource[]): ResourceIndex;
|
|
18
|
+
//# sourceMappingURL=resources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/config/resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AAKrB,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAW/C,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhG;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CA2FjF;AA+bD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,eAAe,GAAG,IAAI,CA0EzB;AAUD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACzC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;CAC3C;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,aAAa,CAwB9E"}
|