@code-pushup/utils 0.116.0 → 0.117.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-pushup/utils",
3
- "version": "0.116.0",
3
+ "version": "0.117.0",
4
4
  "description": "Low-level utilities (helper functions, etc.) used by Code PushUp CLI",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/code-pushup/cli/tree/main/packages/utils#readme",
@@ -27,16 +27,19 @@
27
27
  "node": ">=18.2.0"
28
28
  },
29
29
  "dependencies": {
30
- "@code-pushup/models": "0.116.0",
30
+ "@code-pushup/models": "0.117.0",
31
31
  "ansis": "^3.3.0",
32
32
  "build-md": "^0.4.2",
33
33
  "bundle-require": "^5.1.0",
34
34
  "esbuild": "^0.25.2",
35
+ "glob": "^11.0.1",
35
36
  "ora": "^9.0.0",
36
37
  "semver": "^7.6.0",
37
38
  "simple-git": "^3.20.0",
38
39
  "string-width": "^8.1.0",
39
40
  "wrap-ansi": "^9.0.2",
41
+ "yaml": "^2.5.1",
42
+ "type-fest": "^4.26.1",
40
43
  "zod": "^4.2.1"
41
44
  },
42
45
  "peerDependencies": {
package/src/index.d.ts CHANGED
@@ -43,3 +43,5 @@ export * from './lib/text-formats/index.js';
43
43
  export { countOccurrences, distinct, factorOf, fromJsonLines, objectFromEntries, objectToCliArgs, objectToEntries, objectToKeys, removeUndefinedAndEmptyProps, toArray, toJsonLines, toNumberPrecision, toOrdinal, toUnixNewlines, toUnixPath, type CliArgsObject, } from './lib/transform.js';
44
44
  export type { CamelCaseToKebabCase, ExcludeNullableProps, ExtractArray, ExtractArrays, ItemOrArray, LooseAutocomplete, Prettify, WithRequired, } from './lib/types.js';
45
45
  export * from './lib/import-module.js';
46
+ export { detectMonorepoTool, isMonorepoTool, MONOREPO_TOOL_DETECTORS, MONOREPO_TOOLS, type MonorepoTool, } from './lib/monorepo.js';
47
+ export { hasCodePushUpDependency, hasScript, hasWorkspacesEnabled, listPackages, listWorkspaces, readPnpmWorkspacePatterns, readRootPackageJson, type WorkspacePackage, } from './lib/workspace-packages.js';
package/src/index.js CHANGED
@@ -41,4 +41,6 @@ export { formatAsciiTree } from './lib/text-formats/ascii/tree.js';
41
41
  export * from './lib/text-formats/index.js';
42
42
  export { countOccurrences, distinct, factorOf, fromJsonLines, objectFromEntries, objectToCliArgs, objectToEntries, objectToKeys, removeUndefinedAndEmptyProps, toArray, toJsonLines, toNumberPrecision, toOrdinal, toUnixNewlines, toUnixPath, } from './lib/transform.js';
43
43
  export * from './lib/import-module.js';
44
+ export { detectMonorepoTool, isMonorepoTool, MONOREPO_TOOL_DETECTORS, MONOREPO_TOOLS, } from './lib/monorepo.js';
45
+ export { hasCodePushUpDependency, hasScript, hasWorkspacesEnabled, listPackages, listWorkspaces, readPnpmWorkspacePatterns, readRootPackageJson, } from './lib/workspace-packages.js';
44
46
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,SAAS,EACT,cAAc,EACd,WAAW,EACX,SAAS,GACV,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EACL,mBAAmB,EAEnB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAa,MAAM,eAAe,CAAC;AAC9E,OAAO,EACL,kBAAkB,EAClB,IAAI,EACJ,eAAe,EACf,iBAAiB,EACjB,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,cAAc,EACd,YAAY,GAIb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,uBAAuB,EACvB,aAAa,GAEd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,WAAW,EACX,wBAAwB,EACxB,cAAc,EACd,WAAW,EACX,sBAAsB,EACtB,SAAS,EACT,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,qBAAqB,EACrB,SAAS,EACT,cAAc,EACd,eAAe,EACf,aAAa,GAEd,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,aAAa,EACb,UAAU,EACV,wBAAwB,EACxB,YAAY,EACZ,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,GAEvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,eAAe,EACf,aAAa,EACb,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,aAAa,EACb,WAAW,GACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EACL,qBAAqB,EACrB,gCAAgC,GACjC,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAMtD,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,4BAA4B,EAC5B,OAAO,EACP,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,UAAU,GAEX,MAAM,oBAAoB,CAAC;AAW5B,cAAc,wBAAwB,CAAC;AACvC,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EACvB,cAAc,GAEf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,yBAAyB,EACzB,mBAAmB,GAEpB,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const MONOREPO_TOOLS: readonly ["nx", "turbo", "yarn", "pnpm", "npm"];
2
+ export type MonorepoTool = (typeof MONOREPO_TOOLS)[number];
3
+ export declare const MONOREPO_TOOL_DETECTORS: Record<MonorepoTool, (cwd: string) => Promise<boolean>>;
4
+ export declare function detectMonorepoTool(cwd: string): Promise<MonorepoTool | null>;
5
+ export declare function isMonorepoTool(value: string): value is MonorepoTool;
@@ -0,0 +1,26 @@
1
+ import path from 'node:path';
2
+ import { fileExists } from './file-system.js';
3
+ import { hasWorkspacesEnabled } from './workspace-packages.js';
4
+ export const MONOREPO_TOOLS = ['nx', 'turbo', 'yarn', 'pnpm', 'npm'];
5
+ export const MONOREPO_TOOL_DETECTORS = {
6
+ nx: cwd => fileExists(path.join(cwd, 'nx.json')),
7
+ turbo: cwd => fileExists(path.join(cwd, 'turbo.json')),
8
+ yarn: async (cwd) => (await fileExists(path.join(cwd, 'yarn.lock'))) &&
9
+ (await hasWorkspacesEnabled(cwd)),
10
+ pnpm: cwd => fileExists(path.join(cwd, 'pnpm-workspace.yaml')),
11
+ npm: async (cwd) => (await fileExists(path.join(cwd, 'package-lock.json'))) &&
12
+ (await hasWorkspacesEnabled(cwd)),
13
+ };
14
+ export async function detectMonorepoTool(cwd) {
15
+ // eslint-disable-next-line functional/no-loop-statements
16
+ for (const tool of MONOREPO_TOOLS) {
17
+ if (await MONOREPO_TOOL_DETECTORS[tool](cwd)) {
18
+ return tool;
19
+ }
20
+ }
21
+ return null;
22
+ }
23
+ export function isMonorepoTool(value) {
24
+ return MONOREPO_TOOLS.includes(value);
25
+ }
26
+ //# sourceMappingURL=monorepo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monorepo.js","sourceRoot":"","sources":["../../../src/lib/monorepo.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAU,CAAC;AAG9E,MAAM,CAAC,MAAM,uBAAuB,GAGhC;IACF,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAChD,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACtD,IAAI,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE,CAChB,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;QAC/C,CAAC,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;IAC9D,GAAG,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE,CACf,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACvD,CAAC,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAW;IAEX,yDAAyD;IACzD,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,IAAI,MAAM,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,cAAc,CAAC,QAAQ,CAAC,KAAqB,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { PackageJson } from 'type-fest';
2
+ export type WorkspacePackage = {
3
+ name: string;
4
+ directory: string;
5
+ packageJson: PackageJson;
6
+ };
7
+ export declare function listPackages(cwd: string, patterns?: string[]): Promise<WorkspacePackage[]>;
8
+ export declare function listWorkspaces(cwd: string): Promise<{
9
+ workspaces: WorkspacePackage[];
10
+ rootPackageJson: PackageJson;
11
+ }>;
12
+ export declare function hasWorkspacesEnabled(cwd: string): Promise<boolean>;
13
+ export declare function readRootPackageJson(cwd: string): Promise<PackageJson>;
14
+ export declare function readPnpmWorkspacePatterns(cwd: string): Promise<string[]>;
15
+ export declare function hasDependency(packageJson: PackageJson, name: string): boolean;
16
+ export declare function hasScript(packageJson: PackageJson, script: string): boolean;
17
+ export declare function hasCodePushUpDependency(packageJson: PackageJson): boolean;
@@ -0,0 +1,56 @@
1
+ import { glob } from 'glob';
2
+ import path from 'node:path';
3
+ import * as YAML from 'yaml';
4
+ import { readJsonFile, readTextFile } from './file-system.js';
5
+ export async function listPackages(cwd, patterns = ['**']) {
6
+ const files = await glob(patterns.map(pattern => pattern.replace(/\/?$/, '/package.json')), { cwd });
7
+ return Promise.all(files.toSorted().map(async (file) => {
8
+ const packageJson = await readJsonFile(path.join(cwd, file));
9
+ const directory = path.join(cwd, path.dirname(file));
10
+ const name = packageJson.name || path.basename(directory);
11
+ return { name, directory, packageJson };
12
+ }));
13
+ }
14
+ export async function listWorkspaces(cwd) {
15
+ const rootPackageJson = await readRootPackageJson(cwd);
16
+ const patterns = Array.isArray(rootPackageJson.workspaces)
17
+ ? rootPackageJson.workspaces
18
+ : rootPackageJson.workspaces?.packages;
19
+ return {
20
+ workspaces: await listPackages(cwd, patterns),
21
+ rootPackageJson,
22
+ };
23
+ }
24
+ export async function hasWorkspacesEnabled(cwd) {
25
+ const packageJson = await readRootPackageJson(cwd);
26
+ if (!packageJson.private) {
27
+ return false;
28
+ }
29
+ if (Array.isArray(packageJson.workspaces)) {
30
+ return packageJson.workspaces.length > 0;
31
+ }
32
+ if (typeof packageJson.workspaces === 'object') {
33
+ return Boolean(packageJson.workspaces.packages?.length);
34
+ }
35
+ return false;
36
+ }
37
+ export async function readRootPackageJson(cwd) {
38
+ return await readJsonFile(path.join(cwd, 'package.json'));
39
+ }
40
+ export async function readPnpmWorkspacePatterns(cwd) {
41
+ const content = await readTextFile(path.join(cwd, 'pnpm-workspace.yaml'));
42
+ const workspace = YAML.parse(content);
43
+ return workspace.packages ?? [];
44
+ }
45
+ export function hasDependency(packageJson, name) {
46
+ const { dependencies = {}, devDependencies = {} } = packageJson;
47
+ return name in devDependencies || name in dependencies;
48
+ }
49
+ export function hasScript(packageJson, script) {
50
+ const { scripts = {} } = packageJson;
51
+ return script in scripts;
52
+ }
53
+ export function hasCodePushUpDependency(packageJson) {
54
+ return hasDependency(packageJson, '@code-pushup/cli');
55
+ }
56
+ //# sourceMappingURL=workspace-packages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-packages.js","sourceRoot":"","sources":["../../../src/lib/workspace-packages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAQ9D,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAW,EACX,WAAqB,CAAC,IAAI,CAAC;IAE3B,MAAM,KAAK,GAAG,MAAM,IAAI,CACtB,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,EACjE,EAAE,GAAG,EAAE,CACR,CAAC;IAEF,OAAO,OAAO,CAAC,GAAG,CAChB,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAA6B,EAAE;QAC7D,MAAM,WAAW,GAAG,MAAM,YAAY,CAAc,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC1D,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;IAC1C,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAW;IAEX,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC;QACxD,CAAC,CAAC,eAAe,CAAC,UAAU;QAC5B,CAAC,CAAC,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC;IACzC,OAAO;QACL,UAAU,EAAE,MAAM,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC;QAC7C,eAAe;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAW;IACpD,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1C,OAAO,WAAW,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,OAAO,WAAW,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC/C,OAAO,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW;IACnD,OAAO,MAAM,YAAY,CAAc,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,GAAW;IAEX,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;IACjE,OAAO,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,WAAwB,EAAE,IAAY;IAClE,MAAM,EAAE,YAAY,GAAG,EAAE,EAAE,eAAe,GAAG,EAAE,EAAE,GAAG,WAAW,CAAC;IAChE,OAAO,IAAI,IAAI,eAAe,IAAI,IAAI,IAAI,YAAY,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,WAAwB,EAAE,MAAc;IAChE,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,WAAW,CAAC;IACrC,OAAO,MAAM,IAAI,OAAO,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,WAAwB;IAC9D,OAAO,aAAa,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;AACxD,CAAC"}