@hagicode/hagiscript 0.1.6-dev.36.1.bfa23c6 → 0.1.6-dev.38.1.7802f56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +38 -0
  2. package/bin/runtime +16 -0
  3. package/dist/cli.js +2 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/runtime-commands.d.ts +2 -0
  6. package/dist/commands/runtime-commands.js +136 -0
  7. package/dist/commands/runtime-commands.js.map +1 -0
  8. package/dist/index.d.ts +4 -0
  9. package/dist/index.js +4 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/runtime/command-launch.js +1 -0
  12. package/dist/runtime/command-launch.js.map +1 -1
  13. package/dist/runtime/runtime-executor.d.ts +27 -0
  14. package/dist/runtime/runtime-executor.js +86 -0
  15. package/dist/runtime/runtime-executor.js.map +1 -0
  16. package/dist/runtime/runtime-manager.d.ts +68 -0
  17. package/dist/runtime/runtime-manager.js +554 -0
  18. package/dist/runtime/runtime-manager.js.map +1 -0
  19. package/dist/runtime/runtime-manifest.d.ts +63 -0
  20. package/dist/runtime/runtime-manifest.js +231 -0
  21. package/dist/runtime/runtime-manifest.js.map +1 -0
  22. package/dist/runtime/runtime-paths.d.ts +24 -0
  23. package/dist/runtime/runtime-paths.js +62 -0
  24. package/dist/runtime/runtime-paths.js.map +1 -0
  25. package/dist/runtime/runtime-state.d.ts +43 -0
  26. package/dist/runtime/runtime-state.js +82 -0
  27. package/dist/runtime/runtime-state.js.map +1 -0
  28. package/package.json +8 -3
  29. package/runtime/lib/runtime-script-lib.mjs +103 -0
  30. package/runtime/manifest.yaml +122 -0
  31. package/runtime/scripts/configure-code-server.mjs +14 -0
  32. package/runtime/scripts/configure-omniroute.mjs +16 -0
  33. package/runtime/scripts/install-code-server.mjs +32 -0
  34. package/runtime/scripts/install-dotnet.mjs +24 -0
  35. package/runtime/scripts/install-node.mjs +4 -0
  36. package/runtime/scripts/install-npm-packages.mjs +4 -0
  37. package/runtime/scripts/install-omniroute.mjs +34 -0
  38. package/runtime/scripts/remove-npm-packages.mjs +4 -0
  39. package/runtime/scripts/update-npm-packages.mjs +4 -0
  40. package/runtime/scripts/verify-dotnet.mjs +10 -0
  41. package/runtime/scripts/verify-node.mjs +4 -0
  42. package/runtime/templates/code-server-config.yaml +5 -0
  43. package/runtime/templates/omniroute-config.yaml +4 -0
@@ -0,0 +1,554 @@
1
+ import { createHash } from "node:crypto";
2
+ import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
3
+ import { dirname, join, relative } from "node:path";
4
+ import { tmpdir } from "node:os";
5
+ import { installNodeRuntime, resolveManagedNodeRuntime } from "./node-installer.js";
6
+ import { verifyNodeRuntime } from "./node-verify.js";
7
+ import { syncNpmGlobals } from "./npm-sync.js";
8
+ import { executeRuntimeScript, writeRuntimeLog } from "./runtime-executor.js";
9
+ import { loadRuntimeManifest } from "./runtime-manifest.js";
10
+ import { getComponentConfigDirectory, getComponentManagedRoot, isPathInsideRuntimeRoot, resolveRuntimePaths } from "./runtime-paths.js";
11
+ import { mergeRuntimeState, readRuntimeState, writeRuntimeState } from "./runtime-state.js";
12
+ export class RuntimeLifecycleError extends Error {
13
+ constructor(message, options) {
14
+ super(message, options);
15
+ this.name = "RuntimeLifecycleError";
16
+ }
17
+ }
18
+ export async function installRuntime(options = {}) {
19
+ return runRuntimeLifecycle("install", options);
20
+ }
21
+ export async function removeRuntime(options = {}) {
22
+ return runRuntimeLifecycle("remove", options);
23
+ }
24
+ export async function updateRuntime(options = {}) {
25
+ return runRuntimeLifecycle("update", options);
26
+ }
27
+ export async function runRuntimeLifecycle(phase, options = {}) {
28
+ const manifest = await loadRuntimeManifest({ manifestPath: options.manifestPath });
29
+ const paths = resolveRuntimePaths(manifest, { runtimeRoot: options.runtimeRoot });
30
+ const existingState = await readRuntimeState(paths.stateFile);
31
+ const state = mergeRuntimeState(manifest, paths, existingState);
32
+ const { plan, skipped } = planRuntimeLifecycle(phase, manifest, state, options);
33
+ const now = options.now ?? (() => new Date());
34
+ const logger = options.logger ?? (() => undefined);
35
+ if (options.dryRun || (phase === "update" && options.checkOnly)) {
36
+ for (const action of plan) {
37
+ logger(`Plan: ${phase} ${action.componentName} (${action.strategy}${action.reason ? `: ${action.reason}` : ""})`);
38
+ }
39
+ for (const item of skipped) {
40
+ logger(`Skip: ${item.componentName} (${item.reason})`);
41
+ }
42
+ return {
43
+ manifest,
44
+ paths,
45
+ state,
46
+ plan,
47
+ skipped,
48
+ changedComponents: []
49
+ };
50
+ }
51
+ await ensureManagedDirectories(paths);
52
+ const logFilePath = join(paths.logs, `${phase}-${now().toISOString().replaceAll(":", "-")}.log`);
53
+ const operationState = {
54
+ phase,
55
+ status: "success",
56
+ selectedComponents: plan.map((item) => item.componentName),
57
+ completedComponents: [],
58
+ startedAt: now().toISOString(),
59
+ finishedAt: now().toISOString(),
60
+ logFile: logFilePath
61
+ };
62
+ const changedComponents = [];
63
+ await writeRuntimeLog(logFilePath, `Runtime ${phase} starting with managed root ${paths.root}`);
64
+ try {
65
+ for (const action of plan) {
66
+ const component = manifest.componentMap.get(action.componentName);
67
+ if (!component) {
68
+ throw new RuntimeLifecycleError(`Unknown runtime component ${action.componentName}`);
69
+ }
70
+ logger(`Running ${phase}: ${component.name}`);
71
+ try {
72
+ const componentState = await executeRuntimeAction(action, component, manifest, paths, options, logFilePath);
73
+ state.components[component.name] = componentState;
74
+ changedComponents.push(component.name);
75
+ operationState.completedComponents.push(component.name);
76
+ }
77
+ catch (error) {
78
+ state.components[component.name] = {
79
+ name: component.name,
80
+ type: component.type,
81
+ status: "failed",
82
+ version: state.components[component.name]?.version ?? null,
83
+ managedPaths: [getComponentManagedRoot(paths, component.name)],
84
+ lastAction: phase,
85
+ lastUpdatedAt: now().toISOString(),
86
+ logFile: logFilePath,
87
+ details: {
88
+ error: error instanceof Error ? error.message : String(error)
89
+ }
90
+ };
91
+ throw new RuntimeLifecycleError(`${phase} failed for component ${component.name}: ${error instanceof Error ? error.message : String(error)}`, error instanceof Error ? { cause: error } : undefined);
92
+ }
93
+ }
94
+ operationState.finishedAt = now().toISOString();
95
+ state.lastOperation = operationState;
96
+ await writeRuntimeState(paths.stateFile, state);
97
+ return {
98
+ manifest,
99
+ paths,
100
+ state,
101
+ plan,
102
+ skipped,
103
+ changedComponents,
104
+ logFilePath
105
+ };
106
+ }
107
+ catch (error) {
108
+ operationState.status = "failed";
109
+ operationState.finishedAt = now().toISOString();
110
+ operationState.message = error instanceof Error ? error.message : String(error);
111
+ state.lastOperation = operationState;
112
+ await writeRuntimeLog(logFilePath, `Failure: ${operationState.message}`);
113
+ await writeRuntimeState(paths.stateFile, state);
114
+ throw error;
115
+ }
116
+ }
117
+ export async function queryRuntimeState(options) {
118
+ const manifest = await loadRuntimeManifest({ manifestPath: options.manifestPath });
119
+ const paths = resolveRuntimePaths(manifest, { runtimeRoot: options.runtimeRoot });
120
+ const state = mergeRuntimeState(manifest, paths, await readRuntimeState(paths.stateFile));
121
+ const components = manifest.components.map((component) => {
122
+ const entry = state.components[component.name];
123
+ return {
124
+ name: component.name,
125
+ type: component.type,
126
+ status: entry?.status ?? "not-installed",
127
+ version: entry?.version ?? null,
128
+ managedPaths: entry?.managedPaths ?? [getComponentManagedRoot(paths, component.name)]
129
+ };
130
+ });
131
+ return {
132
+ runtime: state.runtime,
133
+ managedRoot: state.managedRoot,
134
+ managedPaths: state.managedPaths,
135
+ ready: components.every((component) => component.status === "installed"),
136
+ components,
137
+ lastOperation: state.lastOperation
138
+ };
139
+ }
140
+ export function renderRuntimeStateText(report) {
141
+ const lines = [
142
+ `Runtime: ${report.runtime.name} ${report.runtime.version}`,
143
+ `Manifest: ${report.runtime.manifestPath}`,
144
+ `Managed root: ${report.managedRoot}`,
145
+ `Bin: ${report.managedPaths.bin}`,
146
+ `State file: ${report.managedPaths.stateFile}`,
147
+ `Ready: ${report.ready ? "yes" : "no"}`
148
+ ];
149
+ for (const component of report.components) {
150
+ lines.push(`- ${component.name}: ${component.status} version=${component.version ?? "n/a"} root=${component.managedPaths[0] ?? "n/a"}`);
151
+ }
152
+ if (report.lastOperation) {
153
+ lines.push(`Last operation: ${report.lastOperation.phase} ${report.lastOperation.status} (${report.lastOperation.completedComponents.length}/${report.lastOperation.selectedComponents.length})`);
154
+ }
155
+ return lines.join("\n");
156
+ }
157
+ export function planRuntimeLifecycle(phase, manifest, state, options = {}) {
158
+ const requestedSet = selectRequestedComponents(manifest, options.components);
159
+ const orderedComponentNames = orderedPhaseComponents(manifest, phase).filter((name) => requestedSet.has(name));
160
+ const plan = [];
161
+ const skipped = [];
162
+ for (const componentName of orderedComponentNames) {
163
+ const component = manifest.componentMap.get(componentName);
164
+ if (!component) {
165
+ throw new RuntimeLifecycleError(`Unknown runtime component ${componentName}`);
166
+ }
167
+ if (phase === "update" && !options.force) {
168
+ const currentState = state.components[component.name];
169
+ if (currentState?.status === "installed" && !componentNeedsUpdate(component, currentState)) {
170
+ skipped.push({
171
+ componentName: component.name,
172
+ reason: "already up to date"
173
+ });
174
+ continue;
175
+ }
176
+ }
177
+ plan.push(resolveRuntimeAction(component, phase));
178
+ }
179
+ return { plan, skipped };
180
+ }
181
+ async function executeRuntimeAction(action, component, manifest, paths, options, logFilePath) {
182
+ const componentRoot = getComponentManagedRoot(paths, component.name);
183
+ const componentConfigDir = getComponentConfigDirectory(paths, component.name);
184
+ switch (component.name) {
185
+ case "node":
186
+ return executeNodeComponent(action.phase, component, paths, logFilePath);
187
+ case "npm-packages":
188
+ return executeNpmPackagesComponent(action.phase, component, manifest, paths, options, logFilePath);
189
+ default:
190
+ return executeScriptComponent(action, component, manifest, paths, componentRoot, componentConfigDir, options, logFilePath);
191
+ }
192
+ }
193
+ async function executeNodeComponent(phase, component, paths, logFilePath) {
194
+ await mkdir(dirname(paths.nodeRuntime), { recursive: true });
195
+ if (phase === "remove") {
196
+ await rm(paths.nodeRuntime, { recursive: true, force: true });
197
+ await removeWrapper(paths.bin, "node");
198
+ await removeWrapper(paths.bin, "npm");
199
+ await writeRuntimeLog(logFilePath, "Removed managed node runtime directories");
200
+ return {
201
+ name: component.name,
202
+ type: component.type,
203
+ status: "removed",
204
+ version: null,
205
+ managedPaths: [paths.nodeRuntime],
206
+ lastAction: phase,
207
+ lastUpdatedAt: new Date().toISOString(),
208
+ logFile: logFilePath
209
+ };
210
+ }
211
+ const desiredVersion = component.version ?? component.channelVersion;
212
+ const currentVerification = await verifyNodeRuntime(paths.nodeRuntime);
213
+ const normalizedCurrentVersion = normalizeVersion(currentVerification.nodeVersion);
214
+ const normalizedDesiredVersion = normalizeVersion(desiredVersion);
215
+ if (!currentVerification.valid) {
216
+ await rm(paths.nodeRuntime, { recursive: true, force: true });
217
+ }
218
+ if (phase === "update" &&
219
+ currentVerification.valid &&
220
+ normalizedDesiredVersion &&
221
+ normalizedCurrentVersion &&
222
+ normalizedDesiredVersion !== normalizedCurrentVersion) {
223
+ await rm(paths.nodeRuntime, { recursive: true, force: true });
224
+ }
225
+ const resolvedRuntime = await resolveNodeRuntimeForPhase(phase, paths.nodeRuntime, desiredVersion, currentVerification);
226
+ const wrappers = await materializeNodeWrappers(paths.bin, {
227
+ nodePath: resolvedRuntime.nodePath,
228
+ npmPath: resolvedRuntime.npmPath
229
+ });
230
+ await writeRuntimeLog(logFilePath, `Node runtime ready: ${resolvedRuntime.targetDirectory} (${resolvedRuntime.nodeVersion})`);
231
+ return {
232
+ name: component.name,
233
+ type: component.type,
234
+ status: "installed",
235
+ version: normalizeVersion(resolvedRuntime.nodeVersion),
236
+ managedPaths: [paths.nodeRuntime, ...wrappers],
237
+ lastAction: phase,
238
+ lastUpdatedAt: new Date().toISOString(),
239
+ logFile: logFilePath
240
+ };
241
+ }
242
+ async function executeNpmPackagesComponent(phase, component, manifest, paths, options, logFilePath) {
243
+ if (phase === "remove") {
244
+ await rm(paths.npmPrefix, { recursive: true, force: true });
245
+ await writeRuntimeLog(logFilePath, `Removed managed npm prefix ${paths.npmPrefix}`);
246
+ return {
247
+ name: component.name,
248
+ type: component.type,
249
+ status: "removed",
250
+ version: null,
251
+ managedPaths: [paths.npmPrefix],
252
+ lastAction: phase,
253
+ lastUpdatedAt: new Date().toISOString(),
254
+ logFile: logFilePath
255
+ };
256
+ }
257
+ await resolveManagedNodeRuntime({
258
+ targetDirectory: paths.nodeRuntime,
259
+ versionSelector: manifest.componentMap.get("node")?.version ?? "22"
260
+ });
261
+ const scratchDirectory = await mkdtemp(join(tmpdir(), "hagiscript-runtime-npm-"));
262
+ const manifestPath = join(scratchDirectory, "npm-sync-manifest.json");
263
+ const npmManifest = {
264
+ packages: Object.fromEntries(component.packageCatalog.map((entry) => [
265
+ entry.packageName,
266
+ toNpmSyncManifestEntry(entry.packageName, entry.installSpec)
267
+ ]))
268
+ };
269
+ try {
270
+ await writeFile(manifestPath, `${JSON.stringify(npmManifest, null, 2)}\n`, "utf8");
271
+ const summary = await syncNpmGlobals({
272
+ runtimePath: paths.nodeRuntime,
273
+ manifestPath,
274
+ force: options.force,
275
+ npmOptions: {
276
+ prefix: paths.npmPrefix
277
+ },
278
+ onLog: (event) => appendNpmSyncLog(logFilePath, event)
279
+ });
280
+ await writeRuntimeLog(logFilePath, `Managed npm prefix ready: ${paths.npmPrefix} changed=${summary.changedCount}`);
281
+ }
282
+ finally {
283
+ await rm(scratchDirectory, { recursive: true, force: true });
284
+ }
285
+ return {
286
+ name: component.name,
287
+ type: component.type,
288
+ status: "installed",
289
+ version: computePackageCatalogFingerprint(component),
290
+ managedPaths: [paths.npmPrefix],
291
+ lastAction: phase,
292
+ lastUpdatedAt: new Date().toISOString(),
293
+ logFile: logFilePath,
294
+ details: {
295
+ packageCount: component.packageCatalog.length
296
+ }
297
+ };
298
+ }
299
+ async function executeScriptComponent(action, component, manifest, paths, componentRoot, componentConfigDir, options, logFilePath) {
300
+ await mkdir(componentRoot, { recursive: true });
301
+ await mkdir(componentConfigDir, { recursive: true });
302
+ const scriptPath = resolveScriptForAction(action, component);
303
+ if (scriptPath) {
304
+ await executeRuntimeScript(scriptPath, {
305
+ component,
306
+ phase: action.phase,
307
+ manifest,
308
+ paths,
309
+ componentRoot,
310
+ componentConfigDir,
311
+ logFilePath,
312
+ purge: options.purge,
313
+ verbose: options.verbose
314
+ });
315
+ if (action.phase !== "remove" && component.scripts.configure) {
316
+ await executeRuntimeScript(component.scripts.configure, {
317
+ component,
318
+ phase: action.phase,
319
+ manifest,
320
+ paths,
321
+ componentRoot,
322
+ componentConfigDir,
323
+ logFilePath,
324
+ purge: options.purge,
325
+ verbose: options.verbose
326
+ });
327
+ }
328
+ if (action.phase !== "remove" && component.scripts.verify) {
329
+ await executeRuntimeScript(component.scripts.verify, {
330
+ component,
331
+ phase: action.phase,
332
+ manifest,
333
+ paths,
334
+ componentRoot,
335
+ componentConfigDir,
336
+ logFilePath,
337
+ purge: options.purge,
338
+ verbose: options.verbose
339
+ });
340
+ }
341
+ }
342
+ else {
343
+ await cleanupManagedComponent(paths.root, componentRoot, ...(options.purge ? [componentConfigDir] : []));
344
+ }
345
+ const isRemoval = action.phase === "remove";
346
+ return {
347
+ name: component.name,
348
+ type: component.type,
349
+ status: isRemoval ? "removed" : "installed",
350
+ version: isRemoval ? null : component.version ?? component.channelVersion ?? null,
351
+ managedPaths: isRemoval && !options.purge
352
+ ? [componentRoot]
353
+ : isRemoval
354
+ ? [componentRoot, componentConfigDir]
355
+ : [componentRoot, componentConfigDir],
356
+ lastAction: action.phase,
357
+ lastUpdatedAt: new Date().toISOString(),
358
+ logFile: logFilePath
359
+ };
360
+ }
361
+ function selectRequestedComponents(manifest, requestedComponents) {
362
+ if (!requestedComponents || requestedComponents.length === 0) {
363
+ return new Set(manifest.components.map((component) => component.name));
364
+ }
365
+ const requestedSet = new Set();
366
+ for (const value of requestedComponents) {
367
+ if (!manifest.componentMap.has(value)) {
368
+ throw new RuntimeLifecycleError(`Unknown runtime component: ${value}`);
369
+ }
370
+ requestedSet.add(value);
371
+ }
372
+ return requestedSet;
373
+ }
374
+ function orderedPhaseComponents(manifest, phase) {
375
+ const definition = manifest.phases[phase];
376
+ const ordered = [...definition.order];
377
+ return definition.reverse ? ordered.reverse() : ordered;
378
+ }
379
+ function resolveRuntimeAction(component, phase) {
380
+ if (component.name === "node" || component.name === "npm-packages") {
381
+ return {
382
+ componentName: component.name,
383
+ phase,
384
+ strategy: "builtin"
385
+ };
386
+ }
387
+ if (phase === "install") {
388
+ return {
389
+ componentName: component.name,
390
+ phase,
391
+ strategy: "script",
392
+ scriptPath: component.scripts.install
393
+ };
394
+ }
395
+ if (phase === "update") {
396
+ if (component.scripts.update) {
397
+ return {
398
+ componentName: component.name,
399
+ phase,
400
+ strategy: "script",
401
+ scriptPath: component.scripts.update
402
+ };
403
+ }
404
+ return {
405
+ componentName: component.name,
406
+ phase,
407
+ strategy: "fallback-install",
408
+ scriptPath: component.scripts.install,
409
+ reason: "update hook missing; reusing install hook"
410
+ };
411
+ }
412
+ if (component.scripts.remove) {
413
+ return {
414
+ componentName: component.name,
415
+ phase,
416
+ strategy: "script",
417
+ scriptPath: component.scripts.remove
418
+ };
419
+ }
420
+ return {
421
+ componentName: component.name,
422
+ phase,
423
+ strategy: "fallback-cleanup",
424
+ reason: "remove hook missing; cleaning managed paths only"
425
+ };
426
+ }
427
+ function componentNeedsUpdate(component, state) {
428
+ if (state.status !== "installed") {
429
+ return true;
430
+ }
431
+ if (component.name === "npm-packages") {
432
+ return state.version !== computePackageCatalogFingerprint(component);
433
+ }
434
+ const desiredVersion = component.version ?? component.channelVersion ?? null;
435
+ return desiredVersion !== state.version;
436
+ }
437
+ function resolveScriptForAction(action, component) {
438
+ switch (action.strategy) {
439
+ case "script":
440
+ case "fallback-install":
441
+ return action.scriptPath ?? component.scripts.install;
442
+ case "builtin":
443
+ case "fallback-cleanup":
444
+ return null;
445
+ }
446
+ }
447
+ function toNpmSyncManifestEntry(packageName, installSpec) {
448
+ const trimmed = installSpec.trim();
449
+ const scopedPrefix = `${packageName}@`;
450
+ if (trimmed === packageName) {
451
+ return {
452
+ version: "*"
453
+ };
454
+ }
455
+ if (trimmed.startsWith(scopedPrefix)) {
456
+ const selector = trimmed.slice(scopedPrefix.length).trim();
457
+ return {
458
+ version: selector || "*",
459
+ target: selector || undefined
460
+ };
461
+ }
462
+ return {
463
+ version: "*",
464
+ target: trimmed
465
+ };
466
+ }
467
+ function computePackageCatalogFingerprint(component) {
468
+ return createHash("sha256")
469
+ .update(JSON.stringify(component.packageCatalog))
470
+ .digest("hex")
471
+ .slice(0, 12);
472
+ }
473
+ async function ensureManagedDirectories(paths) {
474
+ await Promise.all([
475
+ mkdir(paths.root, { recursive: true }),
476
+ mkdir(paths.bin, { recursive: true }),
477
+ mkdir(paths.config, { recursive: true }),
478
+ mkdir(paths.logs, { recursive: true }),
479
+ mkdir(paths.data, { recursive: true }),
480
+ mkdir(paths.componentsRoot, { recursive: true }),
481
+ mkdir(paths.vendoredRoot, { recursive: true })
482
+ ]);
483
+ }
484
+ async function appendNpmSyncLog(logFilePath, event) {
485
+ await writeRuntimeLog(logFilePath, `npm-sync:${event.type} ${JSON.stringify(event)}`);
486
+ }
487
+ async function cleanupManagedComponent(runtimeRoot, ...paths) {
488
+ for (const pathValue of paths) {
489
+ if (!isPathInsideRuntimeRoot(runtimeRoot, pathValue)) {
490
+ throw new RuntimeLifecycleError(`Refusing to clean path outside managed runtime root: ${pathValue}`);
491
+ }
492
+ await rm(pathValue, { recursive: true, force: true });
493
+ }
494
+ }
495
+ async function materializeNodeWrappers(binDirectory, executables) {
496
+ await mkdir(binDirectory, { recursive: true });
497
+ return Promise.all([
498
+ writeExecutableWrapper(binDirectory, "node", executables.nodePath),
499
+ writeExecutableWrapper(binDirectory, "npm", executables.npmPath)
500
+ ]);
501
+ }
502
+ async function writeExecutableWrapper(binDirectory, commandName, targetPath) {
503
+ const wrapperPath = process.platform === "win32"
504
+ ? join(binDirectory, `${commandName}.cmd`)
505
+ : join(binDirectory, commandName);
506
+ const relativeTarget = relative(binDirectory, targetPath);
507
+ await writeFile(wrapperPath, process.platform === "win32"
508
+ ? `@echo off\r\n"%~dp0\\${relativeTarget.replaceAll("/", "\\")}" %*\r\n`
509
+ : `#!/usr/bin/env sh\nexec "$(dirname "$0")/${relativeTarget.replaceAll("\\", "/")}" "$@"\n`, "utf8");
510
+ return wrapperPath;
511
+ }
512
+ async function removeWrapper(binDirectory, commandName) {
513
+ const wrapperPath = process.platform === "win32"
514
+ ? join(binDirectory, `${commandName}.cmd`)
515
+ : join(binDirectory, commandName);
516
+ await rm(wrapperPath, { force: true });
517
+ }
518
+ function normalizeVersion(value) {
519
+ if (!value) {
520
+ return null;
521
+ }
522
+ return value.replace(/^v/u, "");
523
+ }
524
+ async function resolveNodeRuntimeForPhase(phase, targetDirectory, desiredVersion, currentVerification) {
525
+ if (phase === "update" &&
526
+ currentVerification.valid &&
527
+ normalizeVersion(currentVerification.nodeVersion) === normalizeVersion(desiredVersion)) {
528
+ return {
529
+ targetDirectory: currentVerification.targetDirectory,
530
+ nodePath: currentVerification.nodePath ?? "",
531
+ npmPath: currentVerification.npmPath ?? "",
532
+ nodeVersion: currentVerification.nodeVersion ?? "",
533
+ npmVersion: currentVerification.npmVersion ?? ""
534
+ };
535
+ }
536
+ if (phase === "update") {
537
+ const installed = await installNodeRuntime({
538
+ targetDirectory,
539
+ versionSelector: desiredVersion
540
+ });
541
+ return {
542
+ targetDirectory: installed.targetDirectory,
543
+ nodePath: installed.nodePath,
544
+ npmPath: installed.npmPath,
545
+ nodeVersion: installed.version,
546
+ npmVersion: installed.npmVersion
547
+ };
548
+ }
549
+ return resolveManagedNodeRuntime({
550
+ targetDirectory,
551
+ versionSelector: desiredVersion
552
+ });
553
+ }
554
+ //# sourceMappingURL=runtime-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-manager.js","sourceRoot":"","sources":["../../src/runtime/runtime-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAwB,MAAM,eAAe,CAAA;AACpE,OAAO,EACL,oBAAoB,EACpB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,mBAAmB,EAIpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EAEpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAKlB,MAAM,oBAAoB,CAAA;AAuD3B,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAmC,EAAE;IAErC,OAAO,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,UAAmC,EAAE;IAErC,OAAO,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,UAAmC,EAAE;IAErC,OAAO,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAA4B,EAC5B,UAAmC,EAAE;IAErC,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IAClF,MAAM,KAAK,GAAG,mBAAmB,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;IACjF,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7D,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAA;IAC/D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IAC/E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAElD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAChE,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,CACJ,SAAS,KAAK,IAAI,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAC1G,CAAA;QACH,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,CAAC,SAAS,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACxD,CAAC;QAED,OAAO;YACL,QAAQ;YACR,KAAK;YACL,KAAK;YACL,IAAI;YACJ,OAAO;YACP,iBAAiB,EAAE,EAAE;SACtB,CAAA;IACH,CAAC;IAED,MAAM,wBAAwB,CAAC,KAAK,CAAC,CAAA;IACrC,MAAM,WAAW,GAAG,IAAI,CACtB,KAAK,CAAC,IAAI,EACV,GAAG,KAAK,IAAI,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAC3D,CAAA;IACD,MAAM,cAAc,GAA0B;QAC5C,KAAK;QACL,MAAM,EAAE,SAAS;QACjB,kBAAkB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC;QAC1D,mBAAmB,EAAE,EAAE;QACvB,SAAS,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;QAC9B,UAAU,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;QAC/B,OAAO,EAAE,WAAW;KACrB,CAAA;IACD,MAAM,iBAAiB,GAAa,EAAE,CAAA;IAEtC,MAAM,eAAe,CACnB,WAAW,EACX,WAAW,KAAK,+BAA+B,KAAK,CAAC,IAAI,EAAE,CAC5D,CAAA;IAED,IAAI,CAAC;QACH,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;YACjE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,qBAAqB,CAAC,6BAA6B,MAAM,CAAC,aAAa,EAAE,CAAC,CAAA;YACtF,CAAC;YAED,MAAM,CAAC,WAAW,KAAK,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;YAC7C,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAC/C,MAAM,EACN,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,WAAW,CACZ,CAAA;gBAED,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,cAAc,CAAA;gBACjD,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;gBACtC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YACzD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;oBACjC,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,IAAI;oBAC1D,YAAY,EAAE,CAAC,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;oBAC9D,UAAU,EAAE,KAAK;oBACjB,aAAa,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;oBAClC,OAAO,EAAE,WAAW;oBACpB,OAAO,EAAE;wBACP,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;qBAC9D;iBACF,CAAA;gBAED,MAAM,IAAI,qBAAqB,CAC7B,GAAG,KAAK,yBAAyB,SAAS,CAAC,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC5G,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CACtD,CAAA;YACH,CAAC;QACH,CAAC;QAED,cAAc,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,WAAW,EAAE,CAAA;QAC/C,KAAK,CAAC,aAAa,GAAG,cAAc,CAAA;QACpC,MAAM,iBAAiB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAC/C,OAAO;YACL,QAAQ;YACR,KAAK;YACL,KAAK;YACL,IAAI;YACJ,OAAO;YACP,iBAAiB;YACjB,WAAW;SACZ,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,MAAM,GAAG,QAAQ,CAAA;QAChC,cAAc,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,WAAW,EAAE,CAAA;QAC/C,cAAc,CAAC,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC/E,KAAK,CAAC,aAAa,GAAG,cAAc,CAAA;QACpC,MAAM,eAAe,CAAC,WAAW,EAAE,YAAY,cAAc,CAAC,OAAO,EAAE,CAAC,CAAA;QACxE,MAAM,iBAAiB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAC/C,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAsE;IAEtE,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IAClF,MAAM,KAAK,GAAG,mBAAmB,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;IACjF,MAAM,KAAK,GAAG,iBAAiB,CAC7B,QAAQ,EACR,KAAK,EACL,MAAM,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CACxC,CAAA;IACD,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC9C,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,eAAe;YACxC,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,IAAI;YAC/B,YAAY,EAAE,KAAK,EAAE,YAAY,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;SACtF,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC;QACxE,UAAU;QACV,aAAa,EAAE,KAAK,CAAC,aAAa;KACnC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAA0B;IAC/D,MAAM,KAAK,GAAG;QACZ,YAAY,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE;QAC3D,aAAa,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE;QAC1C,iBAAiB,MAAM,CAAC,WAAW,EAAE;QACrC,QAAQ,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;QACjC,eAAe,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE;QAC9C,UAAU,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;KACxC,CAAA;IAED,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CACR,KAAK,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,YAAY,SAAS,CAAC,OAAO,IAAI,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAC5H,CAAA;IACH,CAAC;IAED,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CACR,mBAAmB,MAAM,CAAC,aAAa,CAAC,KAAK,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,KAAK,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,MAAM,GAAG,CACtL,CAAA;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAA4B,EAC5B,QAA+B,EAC/B,KAAmB,EACnB,UAAmC,EAAE;IAQrC,MAAM,YAAY,GAAG,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;IAC5E,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACpF,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CACvB,CAAA;IACD,MAAM,IAAI,GAA2B,EAAE,CAAA;IACvC,MAAM,OAAO,GAGP,EAAE,CAAA;IAER,KAAK,MAAM,aAAa,IAAI,qBAAqB,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,qBAAqB,CAAC,6BAA6B,aAAa,EAAE,CAAC,CAAA;QAC/E,CAAC;QAED,IAAI,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACzC,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YACrD,IAAI,YAAY,EAAE,MAAM,KAAK,WAAW,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC;gBAC3F,OAAO,CAAC,IAAI,CAAC;oBACX,aAAa,EAAE,SAAS,CAAC,IAAI;oBAC7B,MAAM,EAAE,oBAAoB;iBAC7B,CAAC,CAAA;gBACF,SAAQ;YACV,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC1B,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,MAA4B,EAC5B,SAAqC,EACrC,QAA+B,EAC/B,KAA2B,EAC3B,OAAgC,EAChC,WAAmB;IAEnB,MAAM,aAAa,GAAG,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;IACpE,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;IAE7E,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;QAC1E,KAAK,cAAc;YACjB,OAAO,2BAA2B,CAChC,MAAM,CAAC,KAAK,EACZ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,WAAW,CACZ,CAAA;QACH;YACE,OAAO,sBAAsB,CAC3B,MAAM,EACN,SAAS,EACT,QAAQ,EACR,KAAK,EACL,aAAa,EACb,kBAAkB,EAClB,OAAO,EACP,WAAW,CACZ,CAAA;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,KAA4B,EAC5B,SAAqC,EACrC,KAA2B,EAC3B,WAAmB;IAEnB,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE5D,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7D,MAAM,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACtC,MAAM,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACrC,MAAM,eAAe,CAAC,WAAW,EAAE,0CAA0C,CAAC,CAAA;QAC9E,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;YACjC,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACvC,OAAO,EAAE,WAAW;SACrB,CAAA;IACH,CAAC;IAED,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,cAAc,CAAA;IACpE,MAAM,mBAAmB,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACtE,MAAM,wBAAwB,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAA;IAClF,MAAM,wBAAwB,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAA;IAEjE,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,IACE,KAAK,KAAK,QAAQ;QAClB,mBAAmB,CAAC,KAAK;QACzB,wBAAwB;QACxB,wBAAwB;QACxB,wBAAwB,KAAK,wBAAwB,EACrD,CAAC;QACD,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,0BAA0B,CACtD,KAAK,EACL,KAAK,CAAC,WAAW,EACjB,cAAc,EACd,mBAAmB,CACpB,CAAA;IAED,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,KAAK,CAAC,GAAG,EAAE;QACxD,QAAQ,EAAE,eAAe,CAAC,QAAQ;QAClC,OAAO,EAAE,eAAe,CAAC,OAAO;KACjC,CAAC,CAAA;IACF,MAAM,eAAe,CACnB,WAAW,EACX,uBAAuB,eAAe,CAAC,eAAe,KAAK,eAAe,CAAC,WAAW,GAAG,CAC1F,CAAA;IACD,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,gBAAgB,CAAC,eAAe,CAAC,WAAW,CAAC;QACtD,YAAY,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC;QAC9C,UAAU,EAAE,KAAK;QACjB,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACvC,OAAO,EAAE,WAAW;KACrB,CAAA;AACH,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,KAA4B,EAC5B,SAAqC,EACrC,QAA+B,EAC/B,KAA2B,EAC3B,OAAgC,EAChC,WAAmB;IAEnB,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3D,MAAM,eAAe,CAAC,WAAW,EAAE,8BAA8B,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;QACnF,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;YAC/B,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACvC,OAAO,EAAE,WAAW;SACrB,CAAA;IACH,CAAC;IAED,MAAM,yBAAyB,CAAC;QAC9B,eAAe,EAAE,KAAK,CAAC,WAAW;QAClC,eAAe,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,IAAI,IAAI;KACpE,CAAC,CAAA;IAEF,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAA;IACjF,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,CAAA;IACrE,MAAM,WAAW,GAAG;QAClB,QAAQ,EAAE,MAAM,CAAC,WAAW,CAC1B,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YACtC,KAAK,CAAC,WAAW;YACjB,sBAAsB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC;SAC7D,CAAC,CACH;KACF,CAAA;IAED,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAClF,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC;YACnC,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,YAAY;YACZ,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE;gBACV,MAAM,EAAE,KAAK,CAAC,SAAS;aACxB;YACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC;SACvD,CAAC,CAAA;QACF,MAAM,eAAe,CACnB,WAAW,EACX,6BAA6B,KAAK,CAAC,SAAS,YAAY,OAAO,CAAC,YAAY,EAAE,CAC/E,CAAA;IACH,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9D,CAAC;IAED,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,gCAAgC,CAAC,SAAS,CAAC;QACpD,YAAY,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;QAC/B,UAAU,EAAE,KAAK;QACjB,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACvC,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE;YACP,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,MAAM;SAC9C;KACF,CAAA;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,MAA4B,EAC5B,SAAqC,EACrC,QAA+B,EAC/B,KAA2B,EAC3B,aAAqB,EACrB,kBAA0B,EAC1B,OAAgC,EAChC,WAAmB;IAEnB,MAAM,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/C,MAAM,KAAK,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAE5D,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,oBAAoB,CAAC,UAAU,EAAE;YACrC,SAAS;YACT,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ;YACR,KAAK;YACL,aAAa;YACb,kBAAkB;YAClB,WAAW;YACX,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAA;QAEF,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC7D,MAAM,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE;gBACtD,SAAS;gBACT,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ;gBACR,KAAK;gBACL,aAAa;gBACb,kBAAkB;gBAClB,WAAW;gBACX,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1D,MAAM,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE;gBACnD,SAAS;gBACT,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ;gBACR,KAAK;gBACL,aAAa;gBACb,kBAAkB;gBAClB,WAAW;gBACX,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,uBAAuB,CAC3B,KAAK,CAAC,IAAI,EACV,aAAa,EACb,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAC/C,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAA;IAC3C,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;QAC3C,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,cAAc,IAAI,IAAI;QACjF,YAAY,EACV,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,CAAC,CAAC,CAAC,aAAa,CAAC;YACjB,CAAC,CAAC,SAAS;gBACT,CAAC,CAAC,CAAC,aAAa,EAAE,kBAAkB,CAAC;gBACrC,CAAC,CAAC,CAAC,aAAa,EAAE,kBAAkB,CAAC;QAC3C,UAAU,EAAE,MAAM,CAAC,KAAK;QACxB,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACvC,OAAO,EAAE,WAAW;KACrB,CAAA;AACH,CAAC;AAED,SAAS,yBAAyB,CAChC,QAA+B,EAC/B,mBAAkD;IAElD,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;IACxE,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAA;IAEtC,KAAK,MAAM,KAAK,IAAI,mBAAmB,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,qBAAqB,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAA;QACxE,CAAC;QAED,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAA+B,EAC/B,KAA4B;IAE5B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACzC,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IACrC,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;AACzD,CAAC;AAED,SAAS,oBAAoB,CAC3B,SAAqC,EACrC,KAA4B;IAE5B,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACnE,OAAO;YACL,aAAa,EAAE,SAAS,CAAC,IAAI;YAC7B,KAAK;YACL,QAAQ,EAAE,SAAS;SACpB,CAAA;IACH,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO;YACL,aAAa,EAAE,SAAS,CAAC,IAAI;YAC7B,KAAK;YACL,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO;SACtC,CAAA;IACH,CAAC;IAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC7B,OAAO;gBACL,aAAa,EAAE,SAAS,CAAC,IAAI;gBAC7B,KAAK;gBACL,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM;aACrC,CAAA;QACH,CAAC;QAED,OAAO;YACL,aAAa,EAAE,SAAS,CAAC,IAAI;YAC7B,KAAK;YACL,QAAQ,EAAE,kBAAkB;YAC5B,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO;YACrC,MAAM,EAAE,2CAA2C;SACpD,CAAA;IACH,CAAC;IAED,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7B,OAAO;YACL,aAAa,EAAE,SAAS,CAAC,IAAI;YAC7B,KAAK;YACL,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM;SACrC,CAAA;IACH,CAAC;IAED,OAAO;QACL,aAAa,EAAE,SAAS,CAAC,IAAI;QAC7B,KAAK;QACL,QAAQ,EAAE,kBAAkB;QAC5B,MAAM,EAAE,kDAAkD;KAC3D,CAAA;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,SAAqC,EACrC,KAA4B;IAE5B,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACjC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC,OAAO,KAAK,gCAAgC,CAAC,SAAS,CAAC,CAAA;IACtE,CAAC;IAED,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,cAAc,IAAI,IAAI,CAAA;IAC5E,OAAO,cAAc,KAAK,KAAK,CAAC,OAAO,CAAA;AACzC,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAA4B,EAC5B,SAAqC;IAErC,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,QAAQ,CAAC;QACd,KAAK,kBAAkB;YACrB,OAAO,MAAM,CAAC,UAAU,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,CAAA;QACvD,KAAK,SAAS,CAAC;QACf,KAAK,kBAAkB;YACrB,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,WAAmB,EAAE,WAAmB;IAItE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;IAClC,MAAM,YAAY,GAAG,GAAG,WAAW,GAAG,CAAA;IAEtC,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,OAAO;YACL,OAAO,EAAE,GAAG;SACb,CAAA;IACH,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;QAC1D,OAAO;YACL,OAAO,EAAE,QAAQ,IAAI,GAAG;YACxB,MAAM,EAAE,QAAQ,IAAI,SAAS;SAC9B,CAAA;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,OAAO;KAChB,CAAA;AACH,CAAC;AAED,SAAS,gCAAgC,CAAC,SAAqC;IAC7E,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;SAChD,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACjB,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,KAA2B;IACjE,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QACtC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QACrC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QACxC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QACtC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QACtC,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAChD,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KAC/C,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,WAAmB,EACnB,KAAsB;IAEtB,MAAM,eAAe,CAAC,WAAW,EAAE,YAAY,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AACvF,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,WAAmB,EACnB,GAAG,KAAe;IAElB,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,qBAAqB,CAC7B,wDAAwD,SAAS,EAAE,CACpE,CAAA;QACH,CAAC;QAED,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACvD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,YAAoB,EACpB,WAGC;IAED,MAAM,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9C,OAAO,OAAO,CAAC,GAAG,CAAC;QACjB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC;QAClE,sBAAsB,CAAC,YAAY,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC;KACjE,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,YAAoB,EACpB,WAAmB,EACnB,UAAkB;IAElB,MAAM,WAAW,GACf,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC1B,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,WAAW,MAAM,CAAC;QAC1C,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IACrC,MAAM,cAAc,GAAG,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IAEzD,MAAM,SAAS,CACb,WAAW,EACX,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC1B,CAAC,CAAC,wBAAwB,cAAc,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU;QACxE,CAAC,CAAC,4CAA4C,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,EAC9F,MAAM,CACP,CAAA;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,YAAoB,EAAE,WAAmB;IACpE,MAAM,WAAW,GACf,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC1B,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,WAAW,MAAM,CAAC;QAC1C,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IACrC,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AACxC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAgC;IACxD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AACjC,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,KAA4B,EAC5B,eAAuB,EACvB,cAAkC,EAClC,mBAAkE;IAQlE,IACE,KAAK,KAAK,QAAQ;QAClB,mBAAmB,CAAC,KAAK;QACzB,gBAAgB,CAAC,mBAAmB,CAAC,WAAW,CAAC,KAAK,gBAAgB,CAAC,cAAc,CAAC,EACtF,CAAC;QACD,OAAO;YACL,eAAe,EAAE,mBAAmB,CAAC,eAAe;YACpD,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,IAAI,EAAE;YAC5C,OAAO,EAAE,mBAAmB,CAAC,OAAO,IAAI,EAAE;YAC1C,WAAW,EAAE,mBAAmB,CAAC,WAAW,IAAI,EAAE;YAClD,UAAU,EAAE,mBAAmB,CAAC,UAAU,IAAI,EAAE;SACjD,CAAA;IACH,CAAC;IAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC;YACzC,eAAe;YACf,eAAe,EAAE,cAAc;SAChC,CAAC,CAAA;QACF,OAAO;YACL,eAAe,EAAE,SAAS,CAAC,eAAe;YAC1C,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,WAAW,EAAE,SAAS,CAAC,OAAO;YAC9B,UAAU,EAAE,SAAS,CAAC,UAAU;SACjC,CAAA;IACH,CAAC;IAED,OAAO,yBAAyB,CAAC;QAC/B,eAAe;QACf,eAAe,EAAE,cAAc;KAChC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,63 @@
1
+ export type RuntimeLifecyclePhase = "install" | "remove" | "update";
2
+ export type RuntimeComponentType = "runtime" | "package" | "bundled-runtime";
3
+ export interface RuntimePackageCatalogEntry {
4
+ id?: string;
5
+ packageName: string;
6
+ installSpec: string;
7
+ binName?: string;
8
+ }
9
+ export interface RuntimeComponentDefinition {
10
+ name: string;
11
+ type: RuntimeComponentType;
12
+ source?: string;
13
+ version?: string;
14
+ channelVersion?: string;
15
+ packageCatalog: RuntimePackageCatalogEntry[];
16
+ scripts: {
17
+ install: string;
18
+ verify?: string;
19
+ configure?: string;
20
+ update?: string;
21
+ remove?: string;
22
+ };
23
+ }
24
+ export interface RuntimePhaseDefinition {
25
+ order: string[];
26
+ reverse: boolean;
27
+ }
28
+ export interface RuntimeManifestPaths {
29
+ runtimeRoot: string;
30
+ bin: string;
31
+ config: string;
32
+ logs: string;
33
+ data: string;
34
+ stateFile: string;
35
+ componentsRoot: string;
36
+ npmPrefix: string;
37
+ nodeRuntime: string;
38
+ dotnetRuntime: string;
39
+ vendoredRoot: string;
40
+ }
41
+ export interface LoadedRuntimeManifest {
42
+ manifestPath: string;
43
+ manifestDir: string;
44
+ runtime: {
45
+ name: string;
46
+ version: string;
47
+ };
48
+ components: RuntimeComponentDefinition[];
49
+ componentMap: ReadonlyMap<string, RuntimeComponentDefinition>;
50
+ phases: Record<RuntimeLifecyclePhase, RuntimePhaseDefinition>;
51
+ paths: RuntimeManifestPaths;
52
+ }
53
+ export interface LoadRuntimeManifestOptions {
54
+ manifestPath?: string;
55
+ }
56
+ export declare class RuntimeManifestValidationError extends Error {
57
+ readonly errors: string[];
58
+ constructor(errors: string[]);
59
+ }
60
+ export declare function getPackageRoot(moduleUrl?: string): string;
61
+ export declare function getDefaultRuntimeManifestPath(moduleUrl?: string): string;
62
+ export declare function loadRuntimeManifest(options?: LoadRuntimeManifestOptions): Promise<LoadedRuntimeManifest>;
63
+ export declare function validateRuntimeAssetExists(pathValue: string): Promise<void>;