ph-cmd 5.1.0-dev.36 → 5.1.0-dev.38

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 (63) hide show
  1. package/dist/src/cli.js +30 -1
  2. package/dist/src/cli.js.map +1 -1
  3. package/dist/src/commands/__tests__/update.test.js +1 -1
  4. package/dist/src/commands/__tests__/update.test.js.map +1 -1
  5. package/dist/src/commands/__tests__/use.test.js +1 -1
  6. package/dist/src/commands/__tests__/use.test.js.map +1 -1
  7. package/dist/src/commands/index.d.ts +1 -4
  8. package/dist/src/commands/index.d.ts.map +1 -1
  9. package/dist/src/commands/index.js +1 -7
  10. package/dist/src/commands/index.js.map +1 -1
  11. package/dist/src/commands/init.d.ts +1 -21
  12. package/dist/src/commands/init.d.ts.map +1 -1
  13. package/dist/src/commands/init.js +153 -65
  14. package/dist/src/commands/init.js.map +1 -1
  15. package/dist/src/commands/setup-globals.js +1 -1
  16. package/dist/src/commands/setup-globals.js.map +1 -1
  17. package/dist/src/commands/update.d.ts +1 -12
  18. package/dist/src/commands/update.d.ts.map +1 -1
  19. package/dist/src/commands/update.js +92 -101
  20. package/dist/src/commands/update.js.map +1 -1
  21. package/dist/src/commands/update.old.d.ts +13 -0
  22. package/dist/src/commands/update.old.d.ts.map +1 -0
  23. package/dist/src/commands/update.old.js +105 -0
  24. package/dist/src/commands/update.old.js.map +1 -0
  25. package/dist/src/commands/use-local.d.ts +2 -0
  26. package/dist/src/commands/use-local.d.ts.map +1 -0
  27. package/dist/src/commands/use-local.js +115 -0
  28. package/dist/src/commands/use-local.js.map +1 -0
  29. package/dist/src/commands/use.d.ts +1 -54
  30. package/dist/src/commands/use.d.ts.map +1 -1
  31. package/dist/src/commands/use.js +106 -207
  32. package/dist/src/commands/use.js.map +1 -1
  33. package/dist/src/commands/use.old.d.ts +55 -0
  34. package/dist/src/commands/use.old.d.ts.map +1 -0
  35. package/dist/src/commands/use.old.js +219 -0
  36. package/dist/src/commands/use.old.js.map +1 -0
  37. package/dist/src/utils/constants.d.ts +4 -0
  38. package/dist/src/utils/constants.d.ts.map +1 -1
  39. package/dist/src/utils/constants.js +26 -0
  40. package/dist/src/utils/constants.js.map +1 -1
  41. package/dist/src/utils/file-system.d.ts +2 -0
  42. package/dist/src/utils/file-system.d.ts.map +1 -0
  43. package/dist/src/utils/file-system.js +12 -0
  44. package/dist/src/utils/file-system.js.map +1 -0
  45. package/dist/src/utils/help-formatting.d.ts.map +1 -1
  46. package/dist/src/utils/help-formatting.js +13 -1
  47. package/dist/src/utils/help-formatting.js.map +1 -1
  48. package/dist/src/utils/package-manager.d.ts +0 -7
  49. package/dist/src/utils/package-manager.d.ts.map +1 -1
  50. package/dist/src/utils/package-manager.js +3 -22
  51. package/dist/src/utils/package-manager.js.map +1 -1
  52. package/dist/src/utils/parsing.d.ts +20 -0
  53. package/dist/src/utils/parsing.d.ts.map +1 -0
  54. package/dist/src/utils/parsing.js +52 -0
  55. package/dist/src/utils/parsing.js.map +1 -0
  56. package/dist/src/utils/run-cmd.d.ts +2 -0
  57. package/dist/src/utils/run-cmd.d.ts.map +1 -0
  58. package/dist/src/utils/run-cmd.js +11 -0
  59. package/dist/src/utils/run-cmd.js.map +1 -0
  60. package/dist/src/version.d.ts +1 -1
  61. package/dist/src/version.js +1 -1
  62. package/dist/tsconfig.tsbuildinfo +1 -1
  63. package/package.json +10 -3
@@ -1,218 +1,117 @@
1
- import { existsSync, readdirSync, readFileSync } from "node:fs";
2
- import path from "node:path";
3
- import { useHelp } from "../help.js";
4
- import { getPackageManagerFromLockfile, getProjectInfo, installDependency, resolvePackageManagerOptions, updateDependencyVersionString, withCustomHelp, } from "../utils/index.js";
5
- export const ORG = "@powerhousedao";
6
- // Special packages that don't use the @powerhousedao organization
7
- export const SPECIAL_PACKAGES = [
8
- "document-model",
9
- "document-drive",
10
- "@renown/sdk",
11
- ];
12
- // Packages to exclude from dynamic detection (external dependencies)
13
- export const EXCLUDED_PACKAGES = [
14
- "@powerhousedao/document-engineering",
15
- "@powerhousedao/scalars",
16
- "@powerhousedao/diff-analyzer",
17
- "@powerhousedao/analytics-engine-core",
18
- "@powerhousedao/analytics-engine-graphql",
19
- "@powerhousedao/analytics-engine-pg",
20
- "@powerhousedao/analytics-engine-browser",
21
- "@powerhousedao/analytics-engine-knex",
22
- ];
23
- /**
24
- * Detects all Powerhouse packages from package.json dependencies
25
- * @param packageJson - The parsed package.json object
26
- * @returns Array of package names to process
27
- */
28
- export function detectPowerhousePackages(packageJson) {
29
- const allDependencies = {
30
- ...(packageJson.dependencies || {}),
31
- ...(packageJson.devDependencies || {}),
32
- };
33
- const powerhousePackages = [];
34
- // Find all @powerhousedao packages (excluding document-engineering)
35
- Object.keys(allDependencies).forEach((dep) => {
36
- if (dep.startsWith(ORG + "/") && !EXCLUDED_PACKAGES.includes(dep)) {
37
- powerhousePackages.push(dep);
1
+ import { getPackageVersion } from "@powerhousedao/codegen/file-builders";
2
+ import chalk from "chalk";
3
+ import { boolean, command, flag, oneOf, option, optional, positional, run, string, } from "cmd-ts";
4
+ import { detect } from "package-manager-detector/detect";
5
+ import { readPackage } from "read-pkg";
6
+ import { clean, valid } from "semver";
7
+ import { writePackage } from "write-package";
8
+ import { ALL_POWERHOUSE_DEPENDENCIES } from "../utils/constants.js";
9
+ import { handleMutuallyExclusiveOptions, logVersionUpdate, } from "../utils/parsing.js";
10
+ import { runCmd } from "../utils/run-cmd.js";
11
+ const commandParser = command({
12
+ name: "ph use",
13
+ description: "Specify the release version of Powerhouse dependencies to use.\nTo use a release tag, specify `staging`, `dev`, or `latest` as the first argument to this command or with the --tag option.\n You can also use a specific version with the --version option.",
14
+ args: {
15
+ tagPositional: positional({
16
+ type: optional(oneOf(["latest", "staging", "dev"])),
17
+ displayName: "tag",
18
+ description: `Specify the release tag to use for your project. Can be one of: "latest", "staging", or "dev".`,
19
+ }),
20
+ tagOption: option({
21
+ type: optional(oneOf(["latest", "staging", "dev"])),
22
+ long: "tag",
23
+ short: "t",
24
+ description: `Specify the release tag to use for your project. Can be one of: "latest", "staging", or "dev".`,
25
+ }),
26
+ version: option({
27
+ type: optional(string),
28
+ long: "version",
29
+ short: "v",
30
+ description: "Specify the exact semver release version to use for your project.",
31
+ }),
32
+ skipInstall: flag({
33
+ type: optional(boolean),
34
+ long: "skip-install",
35
+ short: "s",
36
+ description: "Skip running `install` with your package manager",
37
+ }),
38
+ },
39
+ handler: async ({ tagPositional, tagOption, version, skipInstall }) => {
40
+ const tag = tagPositional ?? tagOption;
41
+ handleMutuallyExclusiveOptions({ tag, version }, "versioning strategy");
42
+ if (!tag && !version) {
43
+ throw new Error("Please specify either a release tag or a version to use.");
38
44
  }
39
- });
40
- // Add special packages if they exist
41
- SPECIAL_PACKAGES.forEach((pkg) => {
42
- if (allDependencies[pkg]) {
43
- powerhousePackages.push(pkg);
45
+ if (version && !valid(clean(version))) {
46
+ throw new Error(`❌ Invalid version: ${chalk.bold(version)}`);
44
47
  }
45
- });
46
- return powerhousePackages;
47
- }
48
- /**
49
- * Maps a package name to its monorepo directory path by reading package.json files
50
- * @param packageName - The package name (e.g., '@powerhousedao/common' or 'document-model')
51
- * @param localPath - The base path to the monorepo
52
- * @returns The full path to the package directory
53
- */
54
- export function mapPackageToMonorepoPath(packageName, localPath) {
55
- // Search in all possible locations
56
- const searchDirs = [
57
- path.join(localPath, "packages"),
58
- path.join(localPath, "apps"),
59
- path.join(localPath, "clis"),
60
- ];
61
- for (const searchDir of searchDirs) {
62
- if (!existsSync(searchDir))
63
- continue;
64
- try {
65
- // Read all subdirectories
66
- const subdirs = readdirSync(searchDir, { withFileTypes: true })
67
- .filter((dirent) => dirent.isDirectory())
68
- .map((dirent) => dirent.name);
69
- // Check each subdirectory's package.json
70
- for (const subdir of subdirs) {
71
- const packageJsonPath = path.join(searchDir, subdir, "package.json");
72
- if (existsSync(packageJsonPath)) {
73
- try {
74
- const content = readFileSync(packageJsonPath, "utf-8");
75
- const pkg = JSON.parse(content);
76
- if (pkg.name === packageName) {
77
- return path.join(searchDir, subdir);
78
- }
79
- }
80
- catch {
81
- // Ignore invalid package.json files
82
- }
48
+ console.log(`▶️ Updating project to use ${chalk.bold(version ?? tag)}...\n`);
49
+ const packageJson = await readPackage();
50
+ if (packageJson.dependencies) {
51
+ for (const [name, existingVersion] of Object.entries(packageJson.dependencies)) {
52
+ if (existingVersion && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {
53
+ const newVersion = await getPackageVersion({ name, tag, version });
54
+ packageJson.dependencies[name] = newVersion;
55
+ logVersionUpdate({
56
+ name,
57
+ version: existingVersion,
58
+ newVersion,
59
+ });
83
60
  }
84
61
  }
85
62
  }
86
- catch {
87
- // Ignore errors reading directory
88
- continue;
63
+ if (packageJson.devDependencies) {
64
+ for (const [name, existingVersion] of Object.entries(packageJson.devDependencies)) {
65
+ if (existingVersion && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {
66
+ const newVersion = await getPackageVersion({ name, tag, version });
67
+ packageJson.devDependencies[name] = newVersion;
68
+ logVersionUpdate({
69
+ name,
70
+ version: existingVersion,
71
+ newVersion,
72
+ });
73
+ }
74
+ }
89
75
  }
90
- }
91
- // Fallback to old behavior if not found
92
- const baseName = packageName.startsWith(ORG + "/")
93
- ? packageName.substring(ORG.length + 1)
94
- : packageName;
95
- return path.join(localPath, "packages", baseName);
96
- }
97
- export const ENV_MAP = {
98
- dev: "dev",
99
- staging: "staging",
100
- prod: "latest",
101
- latest: "latest",
102
- };
103
- /**
104
- * Checks if a string is a valid semver version
105
- * Supports formats like: 1.0.0, 1.0.0-beta.1, 1.0.0-dev.123, v1.0.0
106
- */
107
- export function isVersionString(str) {
108
- // Remove leading 'v' if present
109
- const version = str.startsWith("v") ? str.slice(1) : str;
110
- // Semver regex pattern
111
- const semverPattern = /^\d+\.\d+\.\d+(-[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*)?(\+[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*)?$/;
112
- return semverPattern.test(version);
113
- }
114
- export const updatePackageJson = async (envOrVersion, localPath, packageManager, debug, useResolved) => {
115
- const projectInfo = await getProjectInfo();
116
- const pkgManager = packageManager || getPackageManagerFromLockfile(projectInfo.path);
117
- if (debug) {
118
- console.log(">>> projectInfo", projectInfo);
119
- console.log(">>> pkgManager", pkgManager);
120
- }
121
- // Read the project's package.json
122
- const packageJsonPath = path.join(projectInfo.path, "package.json");
123
- const packageJsonContent = readFileSync(packageJsonPath, "utf-8");
124
- const packageJson = JSON.parse(packageJsonContent);
125
- // Detect all Powerhouse packages from the current package.json
126
- const powerhousePackages = detectPowerhousePackages(packageJson);
127
- const dependencies = [];
128
- if (localPath) {
129
- // For local path, map each detected package to its monorepo path
130
- powerhousePackages.forEach((packageName) => {
131
- const fullPath = mapPackageToMonorepoPath(packageName, localPath);
132
- dependencies.push(fullPath);
133
- });
134
- }
135
- else {
136
- // Determine the version tag to use
137
- // For specific versions, add ^ prefix to allow semver range updates
138
- const versionTag = isVersionString(envOrVersion)
139
- ? `^${envOrVersion.replace(/^v/, "")}` // Remove leading 'v' if present and add ^
140
- : ENV_MAP[envOrVersion];
141
- // For remote dependencies, add version tags
142
- powerhousePackages.forEach((packageName) => {
143
- dependencies.push(`${packageName}@${versionTag}`);
144
- });
145
- }
146
- if (debug) {
147
- console.log(">>> dependencies to update", dependencies);
148
- }
149
- if (dependencies.length === 0) {
150
- console.log("ℹ️ No Powerhouse dependencies found to update");
151
- return;
152
- }
153
- try {
154
- console.log("⚙️ Updating dependencies...");
155
- if (localPath || useResolved) {
156
- installDependency(pkgManager, dependencies, projectInfo.path);
76
+ if (packageJson.optionalDependencies) {
77
+ for (const [name, existingVersion] of Object.entries(packageJson.optionalDependencies)) {
78
+ if (existingVersion && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {
79
+ const newVersion = await getPackageVersion({ name, tag, version });
80
+ packageJson.optionalDependencies[name] = newVersion;
81
+ logVersionUpdate({
82
+ name,
83
+ version: existingVersion,
84
+ newVersion,
85
+ });
86
+ }
87
+ }
157
88
  }
158
- else {
159
- updateDependencyVersionString(pkgManager, dependencies, projectInfo.path);
89
+ if (packageJson.peerDependencies) {
90
+ for (const [name, existingVersion] of Object.entries(packageJson.peerDependencies)) {
91
+ if (existingVersion && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {
92
+ const newVersion = await getPackageVersion({ name, tag, version });
93
+ packageJson.peerDependencies[name] = newVersion;
94
+ logVersionUpdate({
95
+ name,
96
+ version: existingVersion,
97
+ newVersion,
98
+ });
99
+ }
100
+ }
160
101
  }
161
- console.log("✅ Dependencies updated successfully");
162
- }
163
- catch (error) {
164
- console.error("❌ Failed to update dependencies");
165
- throw error;
166
- }
167
- };
168
- export const use = async (environment, localPath, options) => {
169
- const isVersion = environment ? isVersionString(environment) : false;
170
- if (!environment ||
171
- (!options.force &&
172
- environment !== "local" &&
173
- !isVersion &&
174
- !Object.keys(ENV_MAP).includes(environment))) {
175
- throw new Error(`❌ Invalid environment, use --force or use one of the following: ${Object.keys(ENV_MAP).join(", ")}, or a specific version (e.g., 5.1.0)`);
176
- }
177
- if (environment === "local" && !localPath) {
178
- throw new Error("❌ Local environment requires a local path, please specify the path to the local environment");
179
- }
180
- const { debug } = options;
181
- // environment can be an Environment key or a version string
182
- const envOrVersion = environment;
183
- if (debug) {
184
- console.log(">>> options", options);
185
- }
186
- const projectInfo = await getProjectInfo();
187
- const packageManager = resolvePackageManagerOptions(options) ??
188
- getPackageManagerFromLockfile(projectInfo.path);
189
- await updatePackageJson(envOrVersion, localPath, packageManager, debug, options.useResolved);
190
- };
191
- export function useCommand(program) {
192
- const useCmd = program
193
- .command("use")
194
- .description("Allows you to change your environment (latest, dev, staging, prod, local) or use a specific version (e.g., 5.1.0)")
195
- .argument("[environment]", "The environment to use (latest, dev, staging, prod, local) or a specific version (e.g., 5.1.0)")
196
- .argument("[localPath]", "The path to the local environment (you have to specify the path to the local environment)")
197
- .option("--force", "force environment to use")
198
- .option("--use-resolved", "Use resolved dependency versions")
199
- .option("--package-manager <packageManager>", "package manager to be used")
200
- .option("--pnpm", "Use 'pnpm' as package manager")
201
- .option("--yarn", "Use 'yarn' as package manager")
202
- .option("--bun", "Use 'bun' as package manager")
203
- .option("--debug", "Show additional logs");
204
- // Use withCustomHelp instead of withHelpAction and addHelpText
205
- return withCustomHelp(useCmd, use, useHelp,
206
- // Pre-check function to validate environment before running the action
207
- (environment) => {
208
- if (!environment &&
209
- !process.argv.includes("--help") &&
210
- !process.argv.includes("-h")) {
211
- console.error('Error: Missing required argument "environment"');
212
- process.exit(1);
213
- return false;
102
+ await writePackage(packageJson);
103
+ console.log(chalk.green(`\n✅ Project updated to use ${chalk.bold(version ?? tag)}\n`));
104
+ if (skipInstall)
105
+ return;
106
+ const packageManager = await detect();
107
+ if (!packageManager) {
108
+ throw new Error(`❌ Failed to detect your package manager. Run install manually.`);
214
109
  }
215
- return true;
216
- });
110
+ console.log(`▶️ Installing updated dependencies with \`${packageManager.agent}\`\n`);
111
+ runCmd(`${packageManager.agent} install`);
112
+ },
113
+ });
114
+ export async function use(args) {
115
+ await run(commandParser, args);
217
116
  }
218
117
  //# sourceMappingURL=use.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use.js","sourceRoot":"","sources":["../../../src/commands/use.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use.js","sourceRoot":"","sources":["../../../src/commands/use.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type { Command } from "commander";
2
+ import type { CommandActionType } from "../types.js";
3
+ import type { PackageManager } from "../utils/index.js";
4
+ export declare const ORG = "@powerhousedao";
5
+ export declare const SPECIAL_PACKAGES: string[];
6
+ export declare const EXCLUDED_PACKAGES: string[];
7
+ /**
8
+ * Detects all Powerhouse packages from package.json dependencies
9
+ * @param packageJson - The parsed package.json object
10
+ * @returns Array of package names to process
11
+ */
12
+ export declare function detectPowerhousePackages(packageJson: {
13
+ dependencies?: Record<string, string>;
14
+ devDependencies?: Record<string, string>;
15
+ }): string[];
16
+ /**
17
+ * Maps a package name to its monorepo directory path by reading package.json files
18
+ * @param packageName - The package name (e.g., '@powerhousedao/common' or 'document-model')
19
+ * @param localPath - The base path to the monorepo
20
+ * @returns The full path to the package directory
21
+ */
22
+ export declare function mapPackageToMonorepoPath(packageName: string, localPath: string): string;
23
+ export declare const ENV_MAP: {
24
+ dev: string;
25
+ staging: string;
26
+ prod: string;
27
+ latest: string;
28
+ };
29
+ export type Environment = keyof typeof ENV_MAP;
30
+ /**
31
+ * Checks if a string is a valid semver version
32
+ * Supports formats like: 1.0.0, 1.0.0-beta.1, 1.0.0-dev.123, v1.0.0
33
+ */
34
+ export declare function isVersionString(str: string): boolean;
35
+ export declare const updatePackageJson: (envOrVersion: (typeof ENV_MAP)[keyof typeof ENV_MAP], localPath?: string, packageManager?: PackageManager, debug?: boolean, useResolved?: boolean) => Promise<void>;
36
+ export type UseOptions = {
37
+ dev?: boolean;
38
+ prod?: boolean;
39
+ local?: string;
40
+ debug?: boolean;
41
+ latest?: boolean;
42
+ force?: boolean;
43
+ packageManager?: string;
44
+ pnpm?: boolean;
45
+ yarn?: boolean;
46
+ bun?: boolean;
47
+ useResolved?: boolean;
48
+ };
49
+ export declare const use: CommandActionType<[
50
+ string | undefined,
51
+ string | undefined,
52
+ UseOptions
53
+ ]>;
54
+ export declare function useCommand(program: Command): Command;
55
+ //# sourceMappingURL=use.old.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use.old.d.ts","sourceRoot":"","sources":["../../../src/commands/use.old.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAUxD,eAAO,MAAM,GAAG,mBAAmB,CAAC;AAGpC,eAAO,MAAM,gBAAgB,UAI5B,CAAC;AAGF,eAAO,MAAM,iBAAiB,UAS7B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C,GAAG,MAAM,EAAE,CAuBX;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,CA2CR;AAED,eAAO,MAAM,OAAO;;;;;CAKnB,CAAC;AAGF,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,OAAO,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOpD;AAED,eAAO,MAAM,iBAAiB,GAC5B,cAAc,CAAC,OAAO,OAAO,EAAE,MAAM,OAAO,OAAO,CAAC,EACpD,YAAY,MAAM,EAClB,iBAAiB,cAAc,EAC/B,QAAQ,OAAO,EACf,cAAc,OAAO,kBAgEtB,CAAC;AAGF,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,iBAAiB,CACjC;IAAC,MAAM,GAAG,SAAS;IAAE,MAAM,GAAG,SAAS;IAAE,UAAU;CAAC,CA0CrD,CAAC;AAEF,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAyCpD"}