@kamaras/venpm 0.1.1 → 0.2.1

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 (113) hide show
  1. package/README.md +13 -3
  2. package/dist/cli/completions.d.ts +3 -0
  3. package/dist/cli/completions.d.ts.map +1 -0
  4. package/dist/cli/completions.js +82 -0
  5. package/dist/cli/completions.js.map +1 -0
  6. package/dist/cli/config-cmd.d.ts.map +1 -1
  7. package/dist/cli/config-cmd.js +30 -22
  8. package/dist/cli/config-cmd.js.map +1 -1
  9. package/dist/cli/context.d.ts.map +1 -1
  10. package/dist/cli/context.js +26 -9
  11. package/dist/cli/context.js.map +1 -1
  12. package/dist/cli/create.d.ts.map +1 -1
  13. package/dist/cli/create.js +21 -22
  14. package/dist/cli/create.js.map +1 -1
  15. package/dist/cli/doctor.d.ts.map +1 -1
  16. package/dist/cli/doctor.js +37 -24
  17. package/dist/cli/doctor.js.map +1 -1
  18. package/dist/cli/first-run.d.ts +4 -0
  19. package/dist/cli/first-run.d.ts.map +1 -0
  20. package/dist/cli/first-run.js +52 -0
  21. package/dist/cli/first-run.js.map +1 -0
  22. package/dist/cli/help.d.ts +3 -0
  23. package/dist/cli/help.d.ts.map +1 -0
  24. package/dist/cli/help.js +42 -0
  25. package/dist/cli/help.js.map +1 -0
  26. package/dist/cli/info.d.ts.map +1 -1
  27. package/dist/cli/info.js +48 -53
  28. package/dist/cli/info.js.map +1 -1
  29. package/dist/cli/install.d.ts.map +1 -1
  30. package/dist/cli/install.js +54 -70
  31. package/dist/cli/install.js.map +1 -1
  32. package/dist/cli/list.d.ts.map +1 -1
  33. package/dist/cli/list.js +20 -20
  34. package/dist/cli/list.js.map +1 -1
  35. package/dist/cli/rebuild.d.ts.map +1 -1
  36. package/dist/cli/rebuild.js +20 -27
  37. package/dist/cli/rebuild.js.map +1 -1
  38. package/dist/cli/repo.d.ts.map +1 -1
  39. package/dist/cli/repo.js +22 -32
  40. package/dist/cli/repo.js.map +1 -1
  41. package/dist/cli/search.d.ts.map +1 -1
  42. package/dist/cli/search.js +19 -20
  43. package/dist/cli/search.js.map +1 -1
  44. package/dist/cli/uninstall.d.ts.map +1 -1
  45. package/dist/cli/uninstall.js +14 -16
  46. package/dist/cli/uninstall.js.map +1 -1
  47. package/dist/cli/update.d.ts.map +1 -1
  48. package/dist/cli/update.js +26 -33
  49. package/dist/cli/update.js.map +1 -1
  50. package/dist/cli/validate.d.ts.map +1 -1
  51. package/dist/cli/validate.js +14 -21
  52. package/dist/cli/validate.js.map +1 -1
  53. package/dist/core/ansi.d.ts +14 -0
  54. package/dist/core/ansi.d.ts.map +1 -0
  55. package/dist/core/ansi.js +36 -0
  56. package/dist/core/ansi.js.map +1 -0
  57. package/dist/core/config.d.ts.map +1 -1
  58. package/dist/core/config.js +8 -1
  59. package/dist/core/config.js.map +1 -1
  60. package/dist/core/errors.d.ts +36 -0
  61. package/dist/core/errors.d.ts.map +1 -0
  62. package/dist/core/errors.js +70 -0
  63. package/dist/core/errors.js.map +1 -0
  64. package/dist/core/fetcher.d.ts.map +1 -1
  65. package/dist/core/fetcher.js +6 -2
  66. package/dist/core/fetcher.js.map +1 -1
  67. package/dist/core/fuzzy.d.ts +3 -0
  68. package/dist/core/fuzzy.d.ts.map +1 -0
  69. package/dist/core/fuzzy.js +30 -0
  70. package/dist/core/fuzzy.js.map +1 -0
  71. package/dist/core/json-renderer.d.ts +5 -0
  72. package/dist/core/json-renderer.d.ts.map +1 -0
  73. package/dist/core/json-renderer.js +48 -0
  74. package/dist/core/json-renderer.js.map +1 -0
  75. package/dist/core/lockfile.d.ts.map +1 -1
  76. package/dist/core/lockfile.js +8 -2
  77. package/dist/core/lockfile.js.map +1 -1
  78. package/dist/core/progress.d.ts +11 -0
  79. package/dist/core/progress.d.ts.map +1 -0
  80. package/dist/core/progress.js +53 -0
  81. package/dist/core/progress.js.map +1 -0
  82. package/dist/core/prompt.d.ts.map +1 -1
  83. package/dist/core/prompt.js +62 -4
  84. package/dist/core/prompt.js.map +1 -1
  85. package/dist/core/registry.js +4 -4
  86. package/dist/core/registry.js.map +1 -1
  87. package/dist/core/renderer.d.ts +13 -0
  88. package/dist/core/renderer.d.ts.map +1 -0
  89. package/dist/core/renderer.js +157 -0
  90. package/dist/core/renderer.js.map +1 -0
  91. package/dist/core/resolver.d.ts.map +1 -1
  92. package/dist/core/resolver.js +2 -4
  93. package/dist/core/resolver.js.map +1 -1
  94. package/dist/core/schema.d.ts.map +1 -1
  95. package/dist/core/schema.js +14 -4
  96. package/dist/core/schema.js.map +1 -1
  97. package/dist/core/stream-renderer.d.ts +5 -0
  98. package/dist/core/stream-renderer.d.ts.map +1 -0
  99. package/dist/core/stream-renderer.js +71 -0
  100. package/dist/core/stream-renderer.js.map +1 -0
  101. package/dist/core/types.d.ts +46 -8
  102. package/dist/core/types.d.ts.map +1 -1
  103. package/dist/index.js +17 -1
  104. package/dist/index.js.map +1 -1
  105. package/package.json +1 -1
  106. package/dist/core/json.d.ts +0 -9
  107. package/dist/core/json.d.ts.map +0 -1
  108. package/dist/core/json.js +0 -10
  109. package/dist/core/json.js.map +0 -1
  110. package/dist/core/log.d.ts +0 -8
  111. package/dist/core/log.d.ts.map +0 -1
  112. package/dist/core/log.js +0 -24
  113. package/dist/core/log.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/cli/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAQjE,wBAAsB,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC7G;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS5D"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/cli/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOjE,wBAAsB,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC7G;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS5D"}
@@ -2,40 +2,39 @@ import { loadConfig } from "../core/config.js";
2
2
  import { getConfigPath } from "../core/paths.js";
3
3
  import { fetchAllIndexes, searchPlugins } from "../core/registry.js";
4
4
  import { loadCache, saveCache } from "../core/cache.js";
5
- import { jsonSuccess, writeJson } from "../core/json.js";
6
5
  import { createRealIOContext } from "./context.js";
7
6
  export async function executeSearch(ctx, query, options = {}) {
7
+ const { renderer } = ctx;
8
8
  const config = await loadConfig(ctx.fs, options.config ?? getConfigPath());
9
9
  const cache = await loadCache(ctx.fs);
10
10
  const { results: indexes, updatedCache } = await fetchAllIndexes(ctx.http, config.repos, { cache });
11
11
  await saveCache(ctx.fs, updatedCache);
12
12
  for (const fi of indexes) {
13
13
  if (fi.error) {
14
- ctx.logger.warn(`Failed to fetch index from "${fi.repoName}": ${fi.error}`);
14
+ renderer.warn(`Failed to fetch index from "${fi.repoName}": ${fi.error}`);
15
15
  }
16
16
  }
17
17
  const results = searchPlugins(indexes, query);
18
- if (options.json) {
19
- writeJson(jsonSuccess({
20
- results: results.map(r => ({
21
- name: r.name,
22
- version: r.entry.version,
23
- description: r.entry.description ?? null,
24
- repo: r.repoName,
25
- })),
26
- }));
27
- return;
28
- }
29
18
  if (results.length === 0) {
30
- ctx.logger.info(`No plugins found matching "${query}"`);
19
+ renderer.text(`No plugins found matching "${query}"`);
20
+ renderer.finish(true, { results: [] });
31
21
  return;
32
22
  }
33
- ctx.logger.info(`Search results for "${query}" (${results.length} found):\n`);
34
- for (const match of results) {
35
- const desc = match.entry.description ? ` — ${match.entry.description}` : "";
36
- ctx.logger.info(` ${match.name}@${match.entry.version}${desc}`);
37
- ctx.logger.info(` repo: ${match.repoName}`);
38
- }
23
+ renderer.heading(`Search results for "${query}" (${results.length} found)`);
24
+ renderer.table(["Name", "Version", "Description", "Repo"], results.map(r => [
25
+ r.name,
26
+ r.entry.version,
27
+ r.entry.description ?? "",
28
+ r.repoName,
29
+ ]));
30
+ renderer.finish(true, {
31
+ results: results.map(r => ({
32
+ name: r.name,
33
+ version: r.entry.version,
34
+ description: r.entry.description ?? null,
35
+ repo: r.repoName,
36
+ })),
37
+ });
39
38
  }
40
39
  export function registerSearchCommand(program) {
41
40
  program
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/cli/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/cli/search.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/cli/uninstall.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AASjE,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDhH;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAc/D"}
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/cli/uninstall.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAUjE,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ChH;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAc/D"}
@@ -4,21 +4,21 @@ import { loadLockfile, saveLockfile, isInstalled, removeInstalled } from "../cor
4
4
  import { getConfigPath, getLockfilePath } from "../core/paths.js";
5
5
  import { fetchAllIndexes, resolvePlugin } from "../core/registry.js";
6
6
  import { loadCache, saveCache } from "../core/cache.js";
7
- import { jsonSuccess, jsonError, writeJson } from "../core/json.js";
7
+ import { ErrorCode, makeError, exitCodeForError } from "../core/errors.js";
8
+ import { findCandidates } from "../core/fuzzy.js";
8
9
  import { createRealIOContext } from "./context.js";
9
10
  export async function executeUninstall(ctx, pluginName, options) {
11
+ const { renderer } = ctx;
10
12
  const configPath = options.config ?? getConfigPath();
11
13
  const lockfilePath = getLockfilePath();
12
14
  const config = await loadConfig(ctx.fs, configPath);
13
15
  let lockfile = await loadLockfile(ctx.fs, lockfilePath);
14
16
  if (!isInstalled(lockfile, pluginName)) {
15
- if (options.json) {
16
- process.exitCode = 1;
17
- writeJson(jsonError(`Plugin "${pluginName}" is not installed.`));
18
- return;
19
- }
20
- ctx.logger.error(`Plugin "${pluginName}" is not installed.`);
21
- process.exitCode = 1;
17
+ const installedNames = Object.keys(lockfile.installed);
18
+ const candidates = findCandidates(pluginName, installedNames);
19
+ renderer.error(makeError(ErrorCode.PLUGIN_NOT_INSTALLED, `Plugin "${pluginName}" is not installed.`, { candidates }));
20
+ renderer.finish(false);
21
+ process.exitCode = exitCodeForError(ErrorCode.PLUGIN_NOT_INSTALLED);
22
22
  return;
23
23
  }
24
24
  // Warn if other installed plugins depend on this one
@@ -29,26 +29,24 @@ export async function executeUninstall(ctx, pluginName, options) {
29
29
  for (const other of otherInstalled) {
30
30
  const match = resolvePlugin(fetchedIndexes, other);
31
31
  if (match?.entry.dependencies?.includes(pluginName)) {
32
- ctx.logger.warn(`"${other}" depends on this plugin`);
32
+ renderer.warn(`"${other}" depends on this plugin`);
33
33
  }
34
34
  }
35
35
  const confirmed = await ctx.prompter.confirm(`Remove plugin "${pluginName}"?`, true);
36
36
  if (!confirmed) {
37
- ctx.logger.info("Uninstall cancelled.");
37
+ renderer.text("Uninstall cancelled.");
38
+ renderer.finish(false);
38
39
  return;
39
40
  }
40
41
  if (config.vencord.path !== null) {
41
42
  const pluginDir = join(config.vencord.path, "src", "userplugins", pluginName);
42
43
  await ctx.fs.rm(pluginDir, { recursive: true, force: true });
43
- ctx.logger.success(`Removed plugin directory: ${pluginDir}`);
44
+ renderer.success(`Removed plugin directory: ${pluginDir}`);
44
45
  }
45
46
  lockfile = removeInstalled(lockfile, pluginName);
46
47
  await saveLockfile(ctx.fs, lockfilePath, lockfile);
47
- if (options.json) {
48
- writeJson(jsonSuccess({ removed: pluginName }));
49
- return;
50
- }
51
- ctx.logger.success(`Uninstalled "${pluginName}".`);
48
+ renderer.success(`Uninstalled "${pluginName}".`);
49
+ renderer.finish(true, { removed: pluginName });
52
50
  }
53
51
  export function registerUninstallCommand(program) {
54
52
  program
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/cli/uninstall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/cli/uninstall.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAoB,MAAM,kBAAkB,CAAC;AAWnF,wBAAsB,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAsJzH;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS5D"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAoB,MAAM,kBAAkB,CAAC;AAYnF,wBAAsB,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAoJzH;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS5D"}
@@ -5,21 +5,20 @@ import { getConfigPath, getLockfilePath } from "../core/paths.js";
5
5
  import { fetchAllIndexes, resolvePlugin } from "../core/registry.js";
6
6
  import { loadCache, saveCache } from "../core/cache.js";
7
7
  import { fetchPlugin } from "../core/fetcher.js";
8
- import { jsonSuccess, jsonError, writeJson } from "../core/json.js";
8
+ import { ErrorCode, makeError, exitCodeForError } from "../core/errors.js";
9
+ import { findCandidates } from "../core/fuzzy.js";
9
10
  import { createRealIOContext } from "./context.js";
10
11
  import { selectMethodFromSource } from "../core/resolver.js";
11
12
  export async function executeUpdate(ctx, pluginName, options) {
13
+ const { renderer } = ctx;
12
14
  const configPath = options.config ?? getConfigPath();
13
15
  const lockfilePath = getLockfilePath();
14
16
  const config = await loadConfig(ctx.fs, configPath);
15
17
  let lockfile = await loadLockfile(ctx.fs, lockfilePath);
16
18
  const installedEntries = Object.entries(lockfile.installed);
17
19
  if (installedEntries.length === 0) {
18
- if (options.json) {
19
- writeJson(jsonSuccess({ updated: [], skipped: [] }));
20
- return;
21
- }
22
- ctx.logger.info("No plugins installed.");
20
+ renderer.text("No plugins installed.");
21
+ renderer.finish(true, { updated: [], skipped: [] });
23
22
  return;
24
23
  }
25
24
  // Determine which plugins to update
@@ -27,13 +26,11 @@ export async function executeUpdate(ctx, pluginName, options) {
27
26
  if (pluginName !== undefined) {
28
27
  const info = getInstalled(lockfile, pluginName);
29
28
  if (!info) {
30
- if (options.json) {
31
- writeJson(jsonError(`Plugin "${pluginName}" is not installed.`));
32
- process.exitCode = 1;
33
- return;
34
- }
35
- ctx.logger.error(`Plugin "${pluginName}" is not installed.`);
36
- process.exitCode = 1;
29
+ const installedNames = Object.keys(lockfile.installed);
30
+ const candidates = findCandidates(pluginName, installedNames);
31
+ renderer.error(makeError(ErrorCode.PLUGIN_NOT_INSTALLED, `Plugin "${pluginName}" is not installed.`, { candidates }));
32
+ renderer.finish(false);
33
+ process.exitCode = exitCodeForError(ErrorCode.PLUGIN_NOT_INSTALLED);
37
34
  return;
38
35
  }
39
36
  targets = [pluginName];
@@ -45,50 +42,49 @@ export async function executeUpdate(ctx, pluginName, options) {
45
42
  const updateable = targets.filter(name => {
46
43
  const info = getInstalled(lockfile, name);
47
44
  if (info.pinned) {
48
- ctx.logger.info(`Skipping pinned plugin: ${name}`);
45
+ renderer.verbose(`Skipping pinned plugin: ${name}`);
49
46
  return false;
50
47
  }
51
48
  if (info.method === "local") {
52
- ctx.logger.info(`Skipping local plugin: ${name}`);
49
+ renderer.verbose(`Skipping local plugin: ${name}`);
53
50
  return false;
54
51
  }
55
52
  return true;
56
53
  });
57
54
  if (updateable.length === 0) {
58
- if (options.json) {
59
- writeJson(jsonSuccess({ updated: [], skipped: [] }));
60
- return;
61
- }
62
- ctx.logger.info("Nothing to update.");
55
+ renderer.text("Nothing to update.");
56
+ renderer.finish(true, { updated: [], skipped: [] });
63
57
  return;
64
58
  }
59
+ const p = renderer.progress("fetch-indexes", "Fetching indexes...");
65
60
  const cache = await loadCache(ctx.fs);
66
61
  const { results: indexes, updatedCache } = await fetchAllIndexes(ctx.http, config.repos, { cache });
67
62
  await saveCache(ctx.fs, updatedCache);
63
+ p.succeed(`${indexes.filter(fi => fi.index).length} repo(s) fetched`);
68
64
  for (const fi of indexes) {
69
65
  if (fi.error) {
70
- ctx.logger.warn(`Failed to fetch index from "${fi.repoName}": ${fi.error}`);
66
+ renderer.warn(`Failed to fetch index from "${fi.repoName}": ${fi.error}`);
71
67
  }
72
68
  }
73
69
  const gitAvailable = await ctx.git.available();
74
70
  let updatedCount = 0;
75
- const updatedEntries = [];
71
+ const updatedResults = [];
76
72
  const skippedNames = [];
77
73
  for (const name of updateable) {
78
74
  const installedInfo = getInstalled(lockfile, name);
79
75
  const match = resolvePlugin(indexes, name, installedInfo.repo);
80
76
  if (!match) {
81
- ctx.logger.warn(`Plugin "${name}" not found in repo "${installedInfo.repo}" — skipping`);
77
+ renderer.warn(`Plugin "${name}" not found in repo "${installedInfo.repo}" — skipping`);
82
78
  skippedNames.push(name);
83
79
  continue;
84
80
  }
85
81
  const latestVersion = match.entry.version;
86
82
  if (latestVersion === installedInfo.version) {
87
- ctx.logger.verbose(`${name} is up to date (${installedInfo.version})`);
83
+ renderer.verbose(`${name} is up to date (${installedInfo.version})`);
88
84
  skippedNames.push(name);
89
85
  continue;
90
86
  }
91
- ctx.logger.info(`Updating ${name}: ${installedInfo.version} → ${latestVersion}`);
87
+ const up = renderer.progress(`update-${name}`, `Updating ${name}: ${installedInfo.version} → ${latestVersion}`);
92
88
  // Remove old plugin directory if vencord.path is configured
93
89
  if (config.vencord.path !== null) {
94
90
  const oldDir = join(config.vencord.path, "src", "userplugins", name);
@@ -127,21 +123,18 @@ export async function executeUpdate(ctx, pluginName, options) {
127
123
  version: latestVersion,
128
124
  });
129
125
  }
130
- ctx.logger.success(`Updated ${name} to ${latestVersion}`);
131
- updatedEntries.push({ name, from: installedInfo.version, to: latestVersion });
126
+ up.succeed(`${name}: ${installedInfo.version} ${latestVersion}`);
127
+ updatedResults.push({ name, from: installedInfo.version, to: latestVersion });
132
128
  updatedCount++;
133
129
  }
134
130
  await saveLockfile(ctx.fs, lockfilePath, lockfile);
135
- if (options.json) {
136
- writeJson(jsonSuccess({ updated: updatedEntries, skipped: skippedNames }));
137
- return;
138
- }
139
131
  if (updatedCount === 0) {
140
- ctx.logger.info("All plugins are up to date.");
132
+ renderer.text("All plugins are up to date.");
141
133
  }
142
134
  else {
143
- ctx.logger.success(`Updated ${updatedCount} plugin(s).`);
135
+ renderer.success(`Updated ${updatedCount} plugin(s).`);
144
136
  }
137
+ renderer.finish(true, { updated: updatedResults, skipped: skippedNames });
145
138
  }
146
139
  export function registerUpdateCommand(program) {
147
140
  program
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoG9D"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4F9D"}
@@ -1,6 +1,6 @@
1
1
  import { join } from "node:path";
2
2
  import { validateIndex } from "../core/schema.js";
3
- import { jsonSuccess, jsonError, writeJson } from "../core/json.js";
3
+ import { ErrorCode, makeError, exitCodeForError } from "../core/errors.js";
4
4
  import { createRealIOContext } from "./context.js";
5
5
  export function registerValidateCommand(program) {
6
6
  program
@@ -10,18 +10,16 @@ export function registerValidateCommand(program) {
10
10
  .action(async (filePath, options) => {
11
11
  const globalOpts = program.opts();
12
12
  const ctx = createRealIOContext(globalOpts);
13
+ const { renderer } = ctx;
13
14
  const targetPath = filePath ?? join(process.cwd(), "plugins.json");
14
15
  let raw;
15
16
  try {
16
17
  raw = await ctx.fs.readFile(targetPath, "utf-8");
17
18
  }
18
19
  catch {
19
- if (globalOpts.json) {
20
- writeJson(jsonError(`Cannot read file: ${targetPath}`));
21
- return;
22
- }
23
- ctx.logger.error(`Cannot read file: ${targetPath}`);
24
- process.exitCode = 1;
20
+ renderer.error(makeError(ErrorCode.SCHEMA_INVALID, `Cannot read file: ${targetPath}`));
21
+ renderer.finish(false);
22
+ process.exitCode = exitCodeForError(ErrorCode.SCHEMA_INVALID);
25
23
  return;
26
24
  }
27
25
  let data;
@@ -29,12 +27,9 @@ export function registerValidateCommand(program) {
29
27
  data = JSON.parse(raw);
30
28
  }
31
29
  catch (err) {
32
- if (globalOpts.json) {
33
- writeJson(jsonError(`Invalid JSON: ${err.message}`));
34
- return;
35
- }
36
- ctx.logger.error(`Invalid JSON: ${err.message}`);
37
- process.exitCode = 1;
30
+ renderer.error(makeError(ErrorCode.SCHEMA_INVALID, `Invalid JSON: ${err.message}`));
31
+ renderer.finish(false);
32
+ process.exitCode = exitCodeForError(ErrorCode.SCHEMA_INVALID);
38
33
  return;
39
34
  }
40
35
  const result = validateIndex(data);
@@ -81,19 +76,17 @@ export function registerValidateCommand(program) {
81
76
  }
82
77
  }
83
78
  const valid = result.valid && allErrors.length === 0;
84
- if (globalOpts.json) {
85
- writeJson(jsonSuccess({ path: targetPath, valid, errors: allErrors }));
86
- return;
87
- }
88
79
  if (!valid) {
89
- ctx.logger.error(`Validation failed (${allErrors.length} error(s)):`);
80
+ renderer.error(makeError(ErrorCode.SCHEMA_INVALID, `Validation failed (${allErrors.length} error(s))`));
90
81
  for (const e of allErrors) {
91
- ctx.logger.error(` ${e}`);
82
+ renderer.text(` ${e}`);
92
83
  }
93
- process.exitCode = 1;
84
+ renderer.finish(false);
85
+ process.exitCode = exitCodeForError(ErrorCode.SCHEMA_INVALID);
94
86
  return;
95
87
  }
96
- ctx.logger.success(`${targetPath} is valid`);
88
+ renderer.success(`${targetPath} is valid`);
89
+ renderer.finish(true, { path: targetPath, valid: true, errors: [] });
97
90
  });
98
91
  }
99
92
  //# sourceMappingURL=validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface Colors {
2
+ amber(text: string): string;
3
+ emerald(text: string): string;
4
+ red(text: string): string;
5
+ yellow(text: string): string;
6
+ dim(text: string): string;
7
+ bright(text: string): string;
8
+ bold(text: string): string;
9
+ }
10
+ export declare function createColors(enabled: boolean): Colors;
11
+ export declare function shouldColorize(stream: {
12
+ isTTY?: boolean;
13
+ }): boolean;
14
+ //# sourceMappingURL=ansi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi.d.ts","sourceRoot":"","sources":["../../src/core/ansi.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,MAAM;IACnB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAqBrD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAInE"}
@@ -0,0 +1,36 @@
1
+ function wrap(code) {
2
+ return (text) => `\x1b[${code}m${text}\x1b[0m`;
3
+ }
4
+ function passthrough(text) {
5
+ return text;
6
+ }
7
+ export function createColors(enabled) {
8
+ if (!enabled) {
9
+ return {
10
+ amber: passthrough,
11
+ emerald: passthrough,
12
+ red: passthrough,
13
+ yellow: passthrough,
14
+ dim: passthrough,
15
+ bright: passthrough,
16
+ bold: passthrough,
17
+ };
18
+ }
19
+ return {
20
+ amber: wrap("38;2;249;115;22"),
21
+ emerald: wrap("38;2;52;211;153"),
22
+ red: wrap("38;2;239;68;68"),
23
+ yellow: wrap("38;2;251;191;36"),
24
+ dim: wrap("38;2;74;92;86"),
25
+ bright: wrap("38;2;232;232;232"),
26
+ bold: wrap("1"),
27
+ };
28
+ }
29
+ export function shouldColorize(stream) {
30
+ if (process.env.NO_COLOR !== undefined)
31
+ return false;
32
+ if (process.env.FORCE_COLOR !== undefined)
33
+ return true;
34
+ return !!stream.isTTY;
35
+ }
36
+ //# sourceMappingURL=ansi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi.js","sourceRoot":"","sources":["../../src/core/ansi.ts"],"names":[],"mappings":"AAAA,SAAS,IAAI,CAAC,IAAY;IACtB,OAAO,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,IAAI,IAAI,IAAI,SAAS,CAAC;AAC3D,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC;AAChB,CAAC;AAYD,MAAM,UAAU,YAAY,CAAC,OAAgB;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO;YACH,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,WAAW;YACpB,GAAG,EAAE,WAAW;YAChB,MAAM,EAAE,WAAW;YACnB,GAAG,EAAE,WAAW;YAChB,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,WAAW;SACpB,CAAC;IACN,CAAC;IACD,OAAO;QACH,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC;QAC9B,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC;QAChC,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC;QAC3B,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC;QAC/B,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC;QAC1B,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC;QAChC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;KAClB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAA2B;IACtD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrD,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvD,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAC1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAErD,eAAO,MAAM,gBAAgB,qFAAqF,CAAC;AAEnH,eAAO,MAAM,cAAc,EAAE,MAK5B,CAAC;AAEF,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAU5D;AAED,wBAAsB,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMpF;AAED,wBAAsB,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGlG"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAErD,eAAO,MAAM,gBAAgB,qFAAqF,CAAC;AAEnH,eAAO,MAAM,cAAc,EAAE,MAK5B,CAAC;AAEF,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAU5D;AAED,wBAAsB,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYpF;AAED,wBAAsB,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGlG"}
@@ -22,7 +22,14 @@ export async function loadConfig(fs, configPath) {
22
22
  if (!exists)
23
23
  return { ...DEFAULT_CONFIG };
24
24
  const raw = await fs.readFile(configPath, "utf-8");
25
- const parsed = JSON.parse(raw);
25
+ let parsed;
26
+ try {
27
+ parsed = JSON.parse(raw);
28
+ }
29
+ catch {
30
+ process.stderr.write(`Warning: Failed to parse config at ${configPath}, using defaults\n`);
31
+ return { ...DEFAULT_CONFIG };
32
+ }
26
33
  return mergeConfig(parsed);
27
34
  }
28
35
  export async function saveConfig(fs, configPath, config) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,CAAC,MAAM,gBAAgB,GAAG,kFAAkF,CAAC;AAEnH,MAAM,CAAC,MAAM,cAAc,GAAW;IAClC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC;IACnD,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACvB,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;CAC5C,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,OAAwB;IAChD,OAAO;QACH,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK;QAC5C,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE;QACvE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO;QAClD,OAAO,EAAE;YACL,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,OAAO;YACnE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM;SACnE;KACJ,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAAc,EAAE,UAAkB;IAC/D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;IAClD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAAc,EAAE,UAAkB,EAAE,MAAc;IAC/E,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3E,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,CAAC,MAAM,gBAAgB,GAAG,kFAAkF,CAAC;AAEnH,MAAM,CAAC,MAAM,cAAc,GAAW;IAClC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC;IACnD,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACvB,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;CAC5C,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,OAAwB;IAChD,OAAO;QACH,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK;QAC5C,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE;QACvE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO;QAClD,OAAO,EAAE;YACL,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,OAAO;YACnE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM;SACnE;KACJ,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAAc,EAAE,UAAkB;IAC/D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,MAAuB,CAAC;IAC5B,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,UAAU,oBAAoB,CAAC,CAAC;QAC3F,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IACjC,CAAC;IACD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAAc,EAAE,UAAkB,EAAE,MAAc;IAC/E,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,36 @@
1
+ export interface ErrorInfo {
2
+ code: string;
3
+ message: string;
4
+ suggestion?: string;
5
+ candidates?: string[];
6
+ docsUrl?: string;
7
+ }
8
+ export declare const ErrorCode: {
9
+ readonly VENCORD_NOT_FOUND: "VENCORD_NOT_FOUND";
10
+ readonly PLUGIN_NOT_FOUND: "PLUGIN_NOT_FOUND";
11
+ readonly PLUGIN_AMBIGUOUS: "PLUGIN_AMBIGUOUS";
12
+ readonly PLUGIN_NOT_INSTALLED: "PLUGIN_NOT_INSTALLED";
13
+ readonly REPO_FETCH_FAILED: "REPO_FETCH_FAILED";
14
+ readonly GIT_NOT_AVAILABLE: "GIT_NOT_AVAILABLE";
15
+ readonly PNPM_NOT_AVAILABLE: "PNPM_NOT_AVAILABLE";
16
+ readonly CIRCULAR_DEPENDENCY: "CIRCULAR_DEPENDENCY";
17
+ readonly VERSION_NOT_FOUND: "VERSION_NOT_FOUND";
18
+ readonly SCHEMA_INVALID: "SCHEMA_INVALID";
19
+ readonly BUILD_FAILED: "BUILD_FAILED";
20
+ readonly DISCORD_NOT_FOUND: "DISCORD_NOT_FOUND";
21
+ readonly NON_INTERACTIVE: "NON_INTERACTIVE";
22
+ };
23
+ export type ErrorCodeValue = typeof ErrorCode[keyof typeof ErrorCode];
24
+ export declare const ExitCode: {
25
+ readonly SUCCESS: 0;
26
+ readonly COMMAND_ERROR: 1;
27
+ readonly USAGE_ERROR: 2;
28
+ readonly ENV_ERROR: 3;
29
+ };
30
+ export declare function exitCodeForError(code: ErrorCodeValue): number;
31
+ export declare function makeError(code: ErrorCodeValue, message: string, options?: {
32
+ suggestion?: string;
33
+ candidates?: string[];
34
+ docsUrl?: string;
35
+ }): ErrorInfo;
36
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,SAAS;;;;;;;;;;;;;;CAcZ,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,SAAS,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAkBtE,eAAO,MAAM,QAAQ;;;;;CAKX,CAAC;AAEX,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAW7D;AAED,wBAAgB,SAAS,CACrB,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3E,SAAS,CAsBX"}