@react-native-windows/telemetry 0.0.0-canary.5 → 0.0.0-canary.51

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 (47) hide show
  1. package/lib-commonjs/e2etest/telemetry.test.d.ts +28 -0
  2. package/lib-commonjs/e2etest/telemetry.test.js +497 -0
  3. package/lib-commonjs/e2etest/telemetry.test.js.map +1 -0
  4. package/lib-commonjs/index.d.ts +5 -1
  5. package/lib-commonjs/index.js +15 -3
  6. package/lib-commonjs/index.js.map +1 -1
  7. package/lib-commonjs/telemetry.d.ts +76 -12
  8. package/lib-commonjs/telemetry.js +350 -109
  9. package/lib-commonjs/telemetry.js.map +1 -1
  10. package/lib-commonjs/test/{sanitize.test.d.ts → basePropUtils.test.d.ts} +0 -0
  11. package/lib-commonjs/test/basePropUtils.test.js +132 -0
  12. package/lib-commonjs/test/basePropUtils.test.js.map +1 -0
  13. package/lib-commonjs/test/errorUtils.test.d.ts +7 -0
  14. package/lib-commonjs/test/errorUtils.test.js +166 -0
  15. package/lib-commonjs/test/errorUtils.test.js.map +1 -0
  16. package/lib-commonjs/test/projectUtils.test.d.ts +7 -0
  17. package/lib-commonjs/test/projectUtils.test.js +88 -0
  18. package/lib-commonjs/test/projectUtils.test.js.map +1 -0
  19. package/lib-commonjs/test/sanitizeUtils.test.d.ts +7 -0
  20. package/lib-commonjs/test/sanitizeUtils.test.js +98 -0
  21. package/lib-commonjs/test/sanitizeUtils.test.js.map +1 -0
  22. package/lib-commonjs/test/versionUtils.test.d.ts +7 -0
  23. package/lib-commonjs/test/versionUtils.test.js +115 -0
  24. package/lib-commonjs/test/versionUtils.test.js.map +1 -0
  25. package/lib-commonjs/utils/basePropUtils.d.ts +76 -0
  26. package/lib-commonjs/utils/basePropUtils.js +156 -0
  27. package/lib-commonjs/utils/basePropUtils.js.map +1 -0
  28. package/lib-commonjs/utils/errorUtils.d.ts +82 -0
  29. package/lib-commonjs/utils/errorUtils.js +173 -0
  30. package/lib-commonjs/utils/errorUtils.js.map +1 -0
  31. package/lib-commonjs/utils/optionUtils.d.ts +45 -0
  32. package/lib-commonjs/utils/optionUtils.js +96 -0
  33. package/lib-commonjs/utils/optionUtils.js.map +1 -0
  34. package/lib-commonjs/utils/projectUtils.d.ts +50 -0
  35. package/lib-commonjs/utils/projectUtils.js +187 -0
  36. package/lib-commonjs/utils/projectUtils.js.map +1 -0
  37. package/lib-commonjs/utils/sanitizeUtils.d.ts +12 -0
  38. package/lib-commonjs/utils/sanitizeUtils.js +82 -0
  39. package/lib-commonjs/utils/sanitizeUtils.js.map +1 -0
  40. package/lib-commonjs/utils/versionUtils.d.ts +38 -0
  41. package/lib-commonjs/utils/versionUtils.js +156 -0
  42. package/lib-commonjs/utils/versionUtils.js.map +1 -0
  43. package/package.json +36 -20
  44. package/CHANGELOG.json +0 -65
  45. package/CHANGELOG.md +0 -39
  46. package/lib-commonjs/test/sanitize.test.js +0 -187
  47. package/lib-commonjs/test/sanitize.test.js.map +0 -1
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) Microsoft Corporation.
4
+ * Licensed under the MIT License.
5
+ * @format
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.getVersionsOfNuGetPackages = exports.getVersionOfNpmPackage = exports.getVisualStudioVersion = exports.getYarnVersion = exports.getNpmVersion = exports.getNodeVersion = void 0;
12
+ const envinfo_1 = __importDefault(require("envinfo"));
13
+ const fs_1 = __importDefault(require("@react-native-windows/fs"));
14
+ const path_1 = __importDefault(require("path"));
15
+ const xmldom_1 = require("@xmldom/xmldom");
16
+ const xpath_1 = __importDefault(require("xpath"));
17
+ const msbuildSelect = xpath_1.default.useNamespaces({
18
+ msbuild: 'http://schemas.microsoft.com/developer/msbuild/2003',
19
+ });
20
+ /**
21
+ * Gets the version of node being used.
22
+ * @returns The version of node being used.
23
+ */
24
+ async function getNodeVersion() {
25
+ return process.version.slice(1);
26
+ }
27
+ exports.getNodeVersion = getNodeVersion;
28
+ /**
29
+ * Gets the version of npm installed, if available.
30
+ * @returns The version of npm installed, if available.
31
+ */
32
+ async function getNpmVersion() {
33
+ try {
34
+ const info = await envinfo_1.default.helpers.getnpmInfo();
35
+ return info[1];
36
+ }
37
+ catch (_a) { }
38
+ return null;
39
+ }
40
+ exports.getNpmVersion = getNpmVersion;
41
+ /**
42
+ * Gets the version of yarn installed, if available.
43
+ * @returns The version of yarn installed, if available.
44
+ */
45
+ async function getYarnVersion() {
46
+ try {
47
+ const info = await envinfo_1.default.helpers.getYarnInfo();
48
+ return info[1];
49
+ }
50
+ catch (_a) { }
51
+ return null;
52
+ }
53
+ exports.getYarnVersion = getYarnVersion;
54
+ /**
55
+ * Gets the latest version of Visual Studio installed, if available.
56
+ * @returns The latest version of Visual Studio installed, if available.
57
+ */
58
+ async function getVisualStudioVersion() {
59
+ try {
60
+ const info = await envinfo_1.default.helpers.getVisualStudioInfo();
61
+ const versions = info[1];
62
+ return versions.sort().slice(-1)[0].split(' ')[0];
63
+ }
64
+ catch (_a) { }
65
+ return null;
66
+ }
67
+ exports.getVisualStudioVersion = getVisualStudioVersion;
68
+ /**
69
+ * Gets the version installed of the specified npm package.
70
+ * @param pkgName The npm package name.
71
+ * @returns The version installed, if available.
72
+ */
73
+ async function getVersionOfNpmPackage(pkgName) {
74
+ try {
75
+ const pkgJsonPath = require.resolve(`${pkgName.trim()}/package.json`, {
76
+ paths: [process.cwd(), __dirname],
77
+ });
78
+ const pkgJson = await fs_1.default.readJsonFile(pkgJsonPath);
79
+ if (pkgJson.name === pkgName) {
80
+ return pkgJson.version;
81
+ }
82
+ }
83
+ catch (_a) { }
84
+ return null;
85
+ }
86
+ exports.getVersionOfNpmPackage = getVersionOfNpmPackage;
87
+ /**
88
+ * Reads and parses an XML file into a Document.
89
+ * @param filePath The path to the XML file.
90
+ * @returns The parsed Document.
91
+ */
92
+ async function readXmlFile(filePath) {
93
+ const contents = await fs_1.default.readFile(filePath, 'utf-8');
94
+ return new xmldom_1.DOMParser().parseFromString(contents);
95
+ }
96
+ /**
97
+ * Gets the versions of the specified NuGet packages referenced in a packages.config file.
98
+ * @param projectDoc The XML document of the packages.connfig file.
99
+ * @param nugetPackages The NuGet package names to look for.
100
+ * @returns The mapping of NuGet package names and their versions.
101
+ */
102
+ function getVersionsFromPackagesConfig(packagesConfigDoc, nugetPackages) {
103
+ const versions = {};
104
+ for (const pkgName of nugetPackages) {
105
+ const version = xpath_1.default.select1(`//packages/package[@id='${pkgName}']/@version`, packagesConfigDoc);
106
+ if (version) {
107
+ const versionValue = version.nodeValue;
108
+ if (versionValue !== null) {
109
+ versions[pkgName] = versionValue;
110
+ }
111
+ }
112
+ }
113
+ return versions;
114
+ }
115
+ /**
116
+ * Gets the versions of the specified NuGet packages referenced in a project file.
117
+ * @param projectDoc The XML document of the project file.
118
+ * @param nugetPackages The NuGet package names to look for.
119
+ * @returns The mapping of NuGet package names and their versions.
120
+ */
121
+ function getVersionsFromProjectFile(projectDoc, nugetPackages) {
122
+ const versions = {};
123
+ for (const pkgName of nugetPackages) {
124
+ const version = msbuildSelect(`//msbuild:ItemGroup/msbuild:PackageReference[@Include='${pkgName}']/msbuild:Version`, projectDoc, true);
125
+ if (version) {
126
+ const versionValue = version.textContent;
127
+ if (versionValue !== null) {
128
+ versions[pkgName] = versionValue;
129
+ }
130
+ }
131
+ }
132
+ return versions;
133
+ }
134
+ /**
135
+ * Gets the versions of the specified NuGet packages referenced in a project file.
136
+ * @param projectFile Path to the native project file.
137
+ * @param nugetPackages The NuGet package names to look for.
138
+ * @returns The mapping of NuGet package names and their versions.
139
+ */
140
+ async function getVersionsOfNuGetPackages(projectFile, nugetPackages) {
141
+ try {
142
+ // First check for the presence of a packages.config file
143
+ const packagesConfigFile = path_1.default.join(path_1.default.dirname(projectFile), 'packages.config');
144
+ const packagesConfigDoc = await readXmlFile(packagesConfigFile);
145
+ return getVersionsFromPackagesConfig(packagesConfigDoc, nugetPackages);
146
+ }
147
+ catch (_a) { }
148
+ try {
149
+ const projectDoc = await readXmlFile(projectFile);
150
+ return getVersionsFromProjectFile(projectDoc, nugetPackages);
151
+ }
152
+ catch (_b) { }
153
+ return {};
154
+ }
155
+ exports.getVersionsOfNuGetPackages = getVersionsOfNuGetPackages;
156
+ //# sourceMappingURL=versionUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionUtils.js","sourceRoot":"","sources":["../../src/utils/versionUtils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport envinfo from 'envinfo';\nimport fs from '@react-native-windows/fs';\nimport path from 'path';\nimport {DOMParser} from '@xmldom/xmldom';\nimport xpath from 'xpath';\n\nconst msbuildSelect = xpath.useNamespaces({\n msbuild: 'http://schemas.microsoft.com/developer/msbuild/2003',\n});\n\n/**\n * Gets the version of node being used.\n * @returns The version of node being used.\n */\nexport async function getNodeVersion(): Promise<string | null> {\n return process.version.slice(1);\n}\n\n/**\n * Gets the version of npm installed, if available.\n * @returns The version of npm installed, if available.\n */\nexport async function getNpmVersion(): Promise<string | null> {\n try {\n const info: any = await envinfo.helpers.getnpmInfo();\n return info[1] as string;\n } catch {}\n return null;\n}\n\n/**\n * Gets the version of yarn installed, if available.\n * @returns The version of yarn installed, if available.\n */\nexport async function getYarnVersion(): Promise<string | null> {\n try {\n const info: any = await envinfo.helpers.getYarnInfo();\n return info[1] as string;\n } catch {}\n return null;\n}\n\n/**\n * Gets the latest version of Visual Studio installed, if available.\n * @returns The latest version of Visual Studio installed, if available.\n */\nexport async function getVisualStudioVersion(): Promise<string | null> {\n try {\n const info: any = await envinfo.helpers.getVisualStudioInfo();\n const versions = info[1] as string[];\n return versions.sort().slice(-1)[0].split(' ')[0];\n } catch {}\n return null;\n}\n\n/**\n * Gets the version installed of the specified npm package.\n * @param pkgName The npm package name.\n * @returns The version installed, if available.\n */\nexport async function getVersionOfNpmPackage(\n pkgName: string,\n): Promise<string | null> {\n try {\n const pkgJsonPath = require.resolve(`${pkgName.trim()}/package.json`, {\n paths: [process.cwd(), __dirname],\n });\n const pkgJson = await fs.readJsonFile<{name: string; version: string}>(\n pkgJsonPath,\n );\n if (pkgJson.name === pkgName) {\n return pkgJson.version;\n }\n } catch {}\n return null;\n}\n\n/**\n * Reads and parses an XML file into a Document.\n * @param filePath The path to the XML file.\n * @returns The parsed Document.\n */\nasync function readXmlFile(filePath: string): Promise<Document> {\n const contents = await fs.readFile(filePath, 'utf-8');\n return new DOMParser().parseFromString(contents);\n}\n\n/**\n * Gets the versions of the specified NuGet packages referenced in a packages.config file.\n * @param projectDoc The XML document of the packages.connfig file.\n * @param nugetPackages The NuGet package names to look for.\n * @returns The mapping of NuGet package names and their versions.\n */\nfunction getVersionsFromPackagesConfig(\n packagesConfigDoc: Document,\n nugetPackages: string[],\n): Record<string, string> {\n const versions: Record<string, string> = {};\n for (const pkgName of nugetPackages) {\n const version = xpath.select1(\n `//packages/package[@id='${pkgName}']/@version`,\n packagesConfigDoc,\n );\n\n if (version) {\n const versionValue = (version as Attr).nodeValue;\n if (versionValue !== null) {\n versions[pkgName] = versionValue;\n }\n }\n }\n return versions;\n}\n\n/**\n * Gets the versions of the specified NuGet packages referenced in a project file.\n * @param projectDoc The XML document of the project file.\n * @param nugetPackages The NuGet package names to look for.\n * @returns The mapping of NuGet package names and their versions.\n */\nfunction getVersionsFromProjectFile(\n projectDoc: Document,\n nugetPackages: string[],\n): Record<string, string> {\n const versions: Record<string, string> = {};\n for (const pkgName of nugetPackages) {\n const version = msbuildSelect(\n `//msbuild:ItemGroup/msbuild:PackageReference[@Include='${pkgName}']/msbuild:Version`,\n projectDoc,\n true,\n );\n\n if (version) {\n const versionValue = (version as Node).textContent;\n if (versionValue !== null) {\n versions[pkgName] = versionValue;\n }\n }\n }\n return versions;\n}\n\n/**\n * Gets the versions of the specified NuGet packages referenced in a project file.\n * @param projectFile Path to the native project file.\n * @param nugetPackages The NuGet package names to look for.\n * @returns The mapping of NuGet package names and their versions.\n */\nexport async function getVersionsOfNuGetPackages(\n projectFile: string,\n nugetPackages: string[],\n): Promise<Record<string, string>> {\n try {\n // First check for the presence of a packages.config file\n const packagesConfigFile = path.join(\n path.dirname(projectFile),\n 'packages.config',\n );\n const packagesConfigDoc = await readXmlFile(packagesConfigFile);\n return getVersionsFromPackagesConfig(packagesConfigDoc, nugetPackages);\n } catch {}\n\n try {\n const projectDoc = await readXmlFile(projectFile);\n return getVersionsFromProjectFile(projectDoc, nugetPackages);\n } catch {}\n\n return {};\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-native-windows/telemetry",
3
- "version": "0.0.0-canary.5",
3
+ "version": "0.0.0-canary.51",
4
4
  "license": "MIT",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "typings": "lib-commonjs/index.d.ts",
@@ -10,29 +10,41 @@
10
10
  "directory": "packages/@react-native-windows/telemetry"
11
11
  },
12
12
  "scripts": {
13
- "build": "just-scripts build",
14
- "clean": "just-scripts clean",
15
- "lint": "just-scripts lint",
16
- "lint:fix": "just-scripts lint:fix",
17
- "test": "set RNW_CLI_TEST=true&& just-scripts test",
18
- "watch": "just-scripts watch"
13
+ "build": "rnw-scripts build",
14
+ "clean": "rnw-scripts clean",
15
+ "lint": "rnw-scripts lint",
16
+ "lint:fix": "rnw-scripts lint:fix",
17
+ "test": "set RNW_CLI_TEST=true&&set APPLICATION_INSIGHTS_NO_STATSBEAT=true&& rnw-scripts test",
18
+ "watch": "rnw-scripts watch"
19
19
  },
20
20
  "dependencies": {
21
- "applicationinsights": "^1.8.8"
21
+ "@react-native-windows/fs": "^0.0.0-canary.8",
22
+ "@typescript-eslint/eslint-plugin": "^5.30.5",
23
+ "@typescript-eslint/parser": "^5.30.5",
24
+ "@xmldom/xmldom": "^0.7.7",
25
+ "applicationinsights": "^2.3.1",
26
+ "ci-info": "^3.2.0",
27
+ "envinfo": "^7.8.1",
28
+ "lodash": "^4.17.21",
29
+ "os-locale": "^5.0.0",
30
+ "xpath": "^0.0.27"
22
31
  },
23
32
  "devDependencies": {
24
- "@rnw-scripts/eslint-config": "0.1.4",
25
- "@rnw-scripts/jest-unittest-config": "0.1.1",
26
- "@rnw-scripts/just-task": "0.0.6",
27
- "@rnw-scripts/ts-config": "0.1.0",
28
- "@types/jest": "^26.0.13",
33
+ "@rnw-scripts/eslint-config": "1.1.14",
34
+ "@rnw-scripts/jest-unittest-config": "1.4.0",
35
+ "@rnw-scripts/just-task": "2.3.0",
36
+ "@rnw-scripts/ts-config": "2.0.2",
37
+ "@types/envinfo": "^7.8.1",
38
+ "@types/jest": "^29.2.2",
39
+ "@types/node": "^14.14.22",
29
40
  "@types/semver": "^7.3.3",
30
- "babel-jest": "^26.3.0",
31
- "eslint": "6.8.0",
32
- "jest": "^26.4.2",
33
- "just-scripts": "^0.44.7",
34
- "prettier": "1.19.1",
35
- "typescript": "^3.8.3"
41
+ "babel-jest": "^29.3.0",
42
+ "eslint": "^8.19.0",
43
+ "jest": "^29.0.3",
44
+ "lookpath": "^1.2.1",
45
+ "prettier": "^2.4.1",
46
+ "semver": "^7.3.5",
47
+ "typescript": "^4.4.4"
36
48
  },
37
49
  "files": [
38
50
  "lib-commonjs"
@@ -45,5 +57,9 @@
45
57
  "patch"
46
58
  ]
47
59
  },
48
- "promoteRelease": true
60
+ "promoteRelease": true,
61
+ "windowsOnly": true,
62
+ "engines": {
63
+ "node": ">= 14"
64
+ }
49
65
  }
package/CHANGELOG.json DELETED
@@ -1,65 +0,0 @@
1
- {
2
- "name": "@react-native-windows/telemetry",
3
- "entries": [
4
- {
5
- "date": "Sat, 07 Nov 2020 05:04:24 GMT",
6
- "tag": "@react-native-windows/telemetry_v0.0.0-canary.5",
7
- "version": "0.0.0-canary.5",
8
- "comments": {
9
- "prerelease": [
10
- {
11
- "comment": "Fix casing of msft domain",
12
- "author": "asklar@microsoft.com",
13
- "commit": "038cecd6638df6df39988fca433a104e82b3423e",
14
- "package": "@react-native-windows/telemetry"
15
- }
16
- ]
17
- }
18
- },
19
- {
20
- "date": "Fri, 06 Nov 2020 05:06:31 GMT",
21
- "tag": "@react-native-windows/telemetry_v0.0.0-canary.4",
22
- "version": "0.0.0-canary.4",
23
- "comments": {
24
- "prerelease": [
25
- {
26
- "comment": "Remove roleInstance property",
27
- "author": "asklar@microsoft.com",
28
- "commit": "9254556d1726e6bec145a50c9935fae868060444",
29
- "package": "@react-native-windows/telemetry"
30
- }
31
- ]
32
- }
33
- },
34
- {
35
- "date": "Thu, 05 Nov 2020 17:30:59 GMT",
36
- "tag": "@react-native-windows/telemetry_v0.0.0-canary.3",
37
- "version": "0.0.0-canary.3",
38
- "comments": {
39
- "prerelease": [
40
- {
41
- "comment": "sanitize paths in other drives too",
42
- "author": "asklar@microsoft.com",
43
- "commit": "10d82a2167557800fd518a13c170bdc7e7bffc14",
44
- "package": "@react-native-windows/telemetry"
45
- }
46
- ]
47
- }
48
- },
49
- {
50
- "date": "Thu, 05 Nov 2020 05:05:45 GMT",
51
- "tag": "@react-native-windows/telemetry_v0.0.0-canary.2",
52
- "version": "0.0.0-canary.2",
53
- "comments": {
54
- "prerelease": [
55
- {
56
- "comment": "Create telemetry package",
57
- "author": "asklar@microsoft.com",
58
- "commit": "61cc42e7f9b4dec313597fba6e99c6f22badbf7e",
59
- "package": "@react-native-windows/telemetry"
60
- }
61
- ]
62
- }
63
- }
64
- ]
65
- }
package/CHANGELOG.md DELETED
@@ -1,39 +0,0 @@
1
- # Change Log - @react-native-windows/telemetry
2
-
3
- This log was last generated on Sat, 07 Nov 2020 05:04:24 GMT and should not be manually modified.
4
-
5
- <!-- Start content -->
6
-
7
- ## 0.0.0-canary.5
8
-
9
- Sat, 07 Nov 2020 05:04:24 GMT
10
-
11
- ### Changes
12
-
13
- - Fix casing of msft domain (asklar@microsoft.com)
14
-
15
- ## 0.0.0-canary.4
16
-
17
- Fri, 06 Nov 2020 05:06:31 GMT
18
-
19
- ### Changes
20
-
21
- - Remove roleInstance property (asklar@microsoft.com)
22
-
23
- ## 0.0.0-canary.3
24
-
25
- Thu, 05 Nov 2020 17:30:59 GMT
26
-
27
- ### Changes
28
-
29
- - sanitize paths in other drives too (asklar@microsoft.com)
30
-
31
- ## 0.0.0-canary.2
32
-
33
- Thu, 05 Nov 2020 05:05:45 GMT
34
-
35
- ### Changes
36
-
37
- - Create telemetry package (asklar@microsoft.com)
38
-
39
- # Change Log - @react-native-windows/telemetry
@@ -1,187 +0,0 @@
1
- "use strict";
2
- /**
3
- * Copyright (c) Microsoft Corporation.
4
- * Licensed under the MIT License.
5
- *
6
- * @format
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- const telemetry = require("../telemetry");
10
- const path_1 = require("path");
11
- telemetry.telClient.config.disableAppInsights = true;
12
- test('Sanitize message, no-op', () => {
13
- // do stuff
14
- expect(telemetry.sanitizeMessage('')).toEqual('');
15
- expect(telemetry.sanitizeMessage('some text')).toEqual('some text');
16
- });
17
- test('Sanitize message, project_dir', () => {
18
- expect(telemetry.sanitizeMessage(`this is the cwd: '${process.cwd()}'`)).toEqual(`this is the cwd: [project_dir]\\???(${process.cwd().length})`);
19
- expect(telemetry.sanitizeMessage(`uppercase: '${process.cwd().toUpperCase()}'`)).toEqual(`uppercase: [project_dir]\\???(${process.cwd().length})`);
20
- expect(telemetry.sanitizeMessage(`lowercase: '${process.cwd().toLowerCase()}'`)).toEqual(`lowercase: [project_dir]\\???(${process.cwd().length})`);
21
- expect(telemetry.sanitizeMessage(`this is the cwd: '${process.cwd()}' and something else`)).toEqual(`this is the cwd: [project_dir]\\???(${process.cwd().length}) and something else`);
22
- expect(telemetry.sanitizeMessage(`this is the cwd: ${process.cwd()} and something else`)).toEqual(`this is the cwd: [project_dir]\\???(${(process.cwd() + ' and something else').length})`);
23
- });
24
- test('Sanitize message, node_modules', () => {
25
- expect(telemetry.sanitizeMessage(`this is the cwd: '${process.cwd()}\\node_modules'`)).toEqual(`this is the cwd: [project_dir]\\???(${(process.cwd() + '\\node_modules').length})`);
26
- expect(telemetry.sanitizeMessage(`this is the cwd: '${process.cwd()}\\node_modules\\foo'`)).toEqual('this is the cwd: node_modules\\foo');
27
- expect(telemetry.sanitizeMessage(`uppercase: '${process.cwd().toUpperCase()}\\NODE_MODULES\\foo'`)).toEqual('uppercase: node_modules\\foo');
28
- expect(telemetry.sanitizeMessage(`lowercase: '${process.cwd().toLowerCase()}\\NODE_MODULES\\'`)).toEqual('lowercase: node_modules\\');
29
- expect(telemetry.sanitizeMessage(`trailing: '${process.cwd()}\\node_modules\\' and something else`)).toEqual('trailing: node_modules\\ and something else');
30
- expect(telemetry.sanitizeMessage(`this is the cwd: ${process.cwd()}\\node_modules and something else that could be part of the path`)).toEqual(`this is the cwd: [project_dir]\\???(${(process.cwd() +
31
- '\\node_modules and something else that could be part of the path').length})`);
32
- expect(telemetry.sanitizeMessage(`this is the cwd: ${process.cwd()}\\node_modules\\ a file under nm`)).toEqual(`this is the cwd: node_modules\\ a file under nm`);
33
- });
34
- test('Sanitize message, other path', () => {
35
- expect(telemetry.sanitizeMessage(`this is another path: 'A:\\foo\\bar\\baz'`)).toEqual(`this is another path: [path]`);
36
- expect(telemetry.sanitizeMessage(`this is another path: A:\\foo\\bar\\baz`)).toEqual(`this is another path: [path]`);
37
- expect(telemetry.sanitizeMessage(`Cannot find module 'react-native/package.json'
38
- Require stack:
39
- - ${process.env.APPDATA}\\npm-cache\\_npx\\1384\\node_modules\\react-native-windows-init\\lib-commonjs\\Cli.js
40
- - ${process.env.APPDATA}\\npm-cache\\_npx\\1384\\node_modules\\react-native-windows-init\\bin.js`)).toEqual(`Cannot find module react-native/package.json
41
- Require stack:
42
- - [appdata]\\???(${(process.env.APPDATA +
43
- '\\npm-cache\\_npx\\1384\\node_modules\\react-native-windows-init\\lib-commonjs\\Cli.js').length})
44
- - [appdata]\\???(${(process.env.APPDATA +
45
- '\\npm-cache\\_npx\\1384\\node_modules\\react-native-windows-init\\bin.js').length})`);
46
- });
47
- test('Sanitize stack frame', () => {
48
- const emptyFrame = {
49
- level: 0,
50
- method: '',
51
- fileName: '',
52
- assembly: 'asdf',
53
- line: 0,
54
- };
55
- telemetry.sanitizeFrame(emptyFrame);
56
- expect(emptyFrame).toEqual({
57
- level: 0,
58
- assembly: '',
59
- fileName: '.',
60
- method: '',
61
- line: 0,
62
- });
63
- const frame1 = {
64
- method: '',
65
- fileName: `${process.cwd()}\\foo.js`,
66
- assembly: 'asdf',
67
- level: 0,
68
- line: 0,
69
- };
70
- telemetry.sanitizeFrame(frame1);
71
- expect(frame1).toEqual({
72
- assembly: '',
73
- fileName: 'telemetry\\foo.js',
74
- method: '',
75
- level: 0,
76
- line: 0,
77
- });
78
- const frame2 = {
79
- method: `myMethod (something ${process.cwd()}`,
80
- fileName: `${process.cwd()}\\foo.js`,
81
- assembly: 'asdf',
82
- level: 1,
83
- line: 42,
84
- };
85
- telemetry.sanitizeFrame(frame2);
86
- expect(frame2).toEqual({
87
- assembly: '',
88
- fileName: 'telemetry\\foo.js',
89
- method: 'myMethod',
90
- level: 1,
91
- line: 42,
92
- });
93
- });
94
- test('basic setup', () => {
95
- expect(telemetry.telClient.commonProperties.sessionId).toBeDefined();
96
- expect(telemetry.telClient.commonProperties.sessionId.length).toBeGreaterThanOrEqual(32);
97
- expect(telemetry.telClient.commonProperties.isTest).toEqual('true');
98
- });
99
- function b(s) {
100
- throw new Error('hello ' + s);
101
- }
102
- function a(s) {
103
- b(s);
104
- }
105
- test('thrown exception a->b, hello world', done => {
106
- let pass = false;
107
- telemetry.telClient.addTelemetryProcessor((envelope, _) => {
108
- if (envelope.data.baseType === 'ExceptionData') {
109
- const data = envelope.data.baseData;
110
- expect(data.exceptions).toBeDefined();
111
- expect(data.exceptions.length).toEqual(1);
112
- expect(data.exceptions[0].message).toEqual('hello world');
113
- const stack = data.exceptions[0].parsedStack;
114
- expect(stack).toBeDefined();
115
- expect(stack.length).toBeGreaterThan(5);
116
- const filename = path_1.basename(__filename);
117
- expect(stack[0].method).toEqual('b');
118
- expect(stack[1].method).toEqual('b');
119
- expect(stack[2].method).toEqual('Object.a');
120
- expect(stack[0].fileName).toEqual(`test\\${filename}`);
121
- expect(stack[1].fileName).toEqual(`test\\${filename}`);
122
- expect(stack[2].fileName).toEqual(`test\\${filename}`);
123
- pass = true;
124
- }
125
- return true;
126
- });
127
- try {
128
- a('world');
129
- }
130
- catch (e) {
131
- telemetry.telClient.trackException({ exception: e });
132
- }
133
- telemetry.telClient.flush();
134
- expect(pass).toBeTruthy();
135
- telemetry.telClient.clearTelemetryProcessors();
136
- telemetry.telClient.addTelemetryProcessor(telemetry.sanitizeEnvelope);
137
- done();
138
- });
139
- test('thrown exception a->b, hello path', done => {
140
- let pass = false;
141
- telemetry.telClient.addTelemetryProcessor((envelope, _) => {
142
- if (envelope.data.baseType === 'ExceptionData') {
143
- const data = envelope.data.baseData;
144
- expect(data.exceptions).toBeDefined();
145
- expect(data.exceptions.length).toEqual(1);
146
- expect(data.exceptions[0].message).toEqual(`hello [project_dir]\\???(${process.cwd().length})`);
147
- const stack = data.exceptions[0].parsedStack;
148
- expect(stack).toBeDefined();
149
- expect(stack.length).toBeGreaterThan(5);
150
- const filename = path_1.basename(__filename);
151
- expect(stack[0].method).toEqual('b');
152
- expect(stack[1].method).toEqual('b');
153
- expect(stack[2].method).toEqual('Object.a');
154
- expect(stack[0].fileName).toEqual(`test\\${filename}`);
155
- expect(stack[1].fileName).toEqual(`test\\${filename}`);
156
- expect(stack[2].fileName).toEqual(`test\\${filename}`);
157
- pass = true;
158
- }
159
- return true;
160
- });
161
- try {
162
- a(process.cwd());
163
- }
164
- catch (e) {
165
- telemetry.telClient.trackException({ exception: e });
166
- }
167
- telemetry.telClient.flush();
168
- expect(pass).toBeTruthy();
169
- expect(pass).toBeTruthy();
170
- telemetry.telClient.clearTelemetryProcessors();
171
- telemetry.telClient.addTelemetryProcessor(telemetry.sanitizeEnvelope);
172
- done();
173
- });
174
- test('trackEvent should not identify roleInstance', () => {
175
- telemetry.telClient.addTelemetryProcessor((envelope, _) => {
176
- expect(envelope.tags['ai.cloud.roleInstance']).toBeUndefined();
177
- return true;
178
- });
179
- telemetry.telClient.trackEvent({
180
- name: 'test',
181
- properties: {},
182
- });
183
- telemetry.telClient.flush();
184
- telemetry.telClient.clearTelemetryProcessors();
185
- telemetry.telClient.addTelemetryProcessor(telemetry.sanitizeEnvelope);
186
- });
187
- //# sourceMappingURL=sanitize.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sanitize.test.js","sourceRoot":"","sources":["../../src/test/sanitize.test.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,0CAA0C;AAE1C,+BAA8B;AAE9B,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAErD,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACnC,WAAW;IACX,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClD,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;IACzC,MAAM,CACJ,SAAS,CAAC,eAAe,CAAC,qBAAqB,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CACjE,CAAC,OAAO,CAAC,wCAAwC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3E,MAAM,CACJ,SAAS,CAAC,eAAe,CAAC,eAAe,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CACzE,CAAC,OAAO,CAAC,kCAAkC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACrE,MAAM,CACJ,SAAS,CAAC,eAAe,CAAC,eAAe,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CACzE,CAAC,OAAO,CAAC,kCAAkC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACrE,MAAM,CACJ,SAAS,CAAC,eAAe,CACvB,qBAAqB,OAAO,CAAC,GAAG,EAAE,sBAAsB,CACzD,CACF,CAAC,OAAO,CACP,wCACE,OAAO,CAAC,GAAG,EAAE,CAAC,MAChB,uBAAuB,CACxB,CAAC;IACF,MAAM,CACJ,SAAS,CAAC,eAAe,CACvB,oBAAoB,OAAO,CAAC,GAAG,EAAE,qBAAqB,CACvD,CACF,CAAC,OAAO,CACP,uCACE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,qBAAqB,CAAC,CAAC,MAC1C,GAAG,CACJ,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC1C,MAAM,CACJ,SAAS,CAAC,eAAe,CACvB,qBAAqB,OAAO,CAAC,GAAG,EAAE,iBAAiB,CACpD,CACF,CAAC,OAAO,CACP,wCACE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC,CAAC,MACrC,GAAG,CACJ,CAAC;IACF,MAAM,CACJ,SAAS,CAAC,eAAe,CACvB,qBAAqB,OAAO,CAAC,GAAG,EAAE,sBAAsB,CACzD,CACF,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;IACjD,MAAM,CACJ,SAAS,CAAC,eAAe,CACvB,eAAe,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,sBAAsB,CACjE,CACF,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAC3C,MAAM,CACJ,SAAS,CAAC,eAAe,CACvB,eAAe,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,mBAAmB,CAC9D,CACF,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACxC,MAAM,CACJ,SAAS,CAAC,eAAe,CACvB,cAAc,OAAO,CAAC,GAAG,EAAE,sCAAsC,CAClE,CACF,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;IAC3D,MAAM,CACJ,SAAS,CAAC,eAAe,CACvB,oBAAoB,OAAO,CAAC,GAAG,EAAE,kEAAkE,CACpG,CACF,CAAC,OAAO,CACP,uCACE,CACE,OAAO,CAAC,GAAG,EAAE;QACb,kEAAkE,CACnE,CAAC,MACJ,GAAG,CACJ,CAAC;IACF,MAAM,CACJ,SAAS,CAAC,eAAe,CACvB,oBAAoB,OAAO,CAAC,GAAG,EAAE,kCAAkC,CACpE,CACF,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;IACxC,MAAM,CACJ,SAAS,CAAC,eAAe,CAAC,2CAA2C,CAAC,CACvE,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAE3C,MAAM,CACJ,SAAS,CAAC,eAAe,CAAC,yCAAyC,CAAC,CACrE,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAE1C,MAAM,CACJ,SAAS,CAAC,eAAe,CACvB;;UAEI,OAAO,CAAC,GAAG,CAAC,OAAO;UACnB,OAAO,CAAC,GAAG,CAAC,OAAO,0EAA0E,CAClG,CACF,CAAC,OAAO,CAAC;;yBAGJ,CACE,OAAO,CAAC,GAAG,CAAC,OAAO;QACnB,wFAAwF,CACzF,CAAC,MACJ;yBAEE,CACE,OAAO,CAAC,GAAG,CAAC,OAAO;QACnB,0EAA0E,CAC3E,CAAC,MACJ,GAAG,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAChC,MAAM,UAAU,GAAqC;QACnD,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,CAAC;KACR,CAAC;IACF,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;QACzB,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,GAAG;QACb,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,CAAC;KACR,CAAC,CAAC;IAEH,MAAM,MAAM,GAAqC;QAC/C,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU;QACpC,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,CAAC;KACR,CAAC;IACF,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QACrB,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,mBAAmB;QAC7B,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,CAAC;KACR,CAAC,CAAC;IAEH,MAAM,MAAM,GAAqC;QAC/C,MAAM,EAAE,uBAAuB,OAAO,CAAC,GAAG,EAAE,EAAE;QAC9C,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU;QACpC,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,EAAE;KACT,CAAC;IACF,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QACrB,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,mBAAmB;QAC7B,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,EAAE;KACT,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE;IACvB,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAErE,MAAM,CACJ,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CACtD,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAE7B,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,CAAC,CAAS;IAClB,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AAChC,CAAC;AACD,SAAS,CAAC,CAAC,CAAS;IAClB,CAAC,CAAC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,IAAI,CAAC,oCAAoC,EAAE,IAAI,CAAC,EAAE;IAChD,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,SAAS,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;QACxD,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,KAAK,eAAe,EAAE;YAC9C,MAAM,IAAI,GAAI,QAAQ,CAAC,IAAY,CAAC,QAAQ,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAE1D,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAExC,MAAM,QAAQ,GAAG,eAAQ,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;YACvD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;YACvD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;YACvD,IAAI,GAAG,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,IAAI;QACF,CAAC,CAAC,OAAO,CAAC,CAAC;KACZ;IAAC,OAAO,CAAC,EAAE;QACV,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,EAAC,SAAS,EAAE,CAAC,EAAC,CAAC,CAAC;KACpD;IACD,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;IAC1B,SAAS,CAAC,SAAS,CAAC,wBAAwB,EAAE,CAAC;IAC/C,SAAS,CAAC,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACtE,IAAI,EAAE,CAAC;AACT,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mCAAmC,EAAE,IAAI,CAAC,EAAE;IAC/C,IAAI,IAAI,GAAG,KAAK,CAAC;IAEjB,SAAS,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;QACxD,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,KAAK,eAAe,EAAE;YAC9C,MAAM,IAAI,GAAI,QAAQ,CAAC,IAAY,CAAC,QAAQ,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CACxC,4BAA4B,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CACpD,CAAC;YAEF,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAExC,MAAM,QAAQ,GAAG,eAAQ,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;YACvD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;YACvD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;YACvD,IAAI,GAAG,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,IAAI;QACF,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;KAClB;IAAC,OAAO,CAAC,EAAE;QACV,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,EAAC,SAAS,EAAE,CAAC,EAAC,CAAC,CAAC;KACpD;IACD,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAE5B,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;IAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;IAC1B,SAAS,CAAC,SAAS,CAAC,wBAAwB,EAAE,CAAC;IAC/C,SAAS,CAAC,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACtE,IAAI,EAAE,CAAC;AACT,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;IACvD,SAAS,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;QACxD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC;QAC7B,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,EAAE;KACf,CAAC,CAAC;IACH,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC5B,SAAS,CAAC,SAAS,CAAC,wBAAwB,EAAE,CAAC;IAC/C,SAAS,CAAC,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC"}