@react-native-windows/telemetry 0.0.0-canary.8 → 0.0.0-canary.80

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 +6 -1
  5. package/lib-commonjs/index.js +17 -2
  6. package/lib-commonjs/index.js.map +1 -1
  7. package/lib-commonjs/telemetry.d.ts +75 -18
  8. package/lib-commonjs/telemetry.js +340 -141
  9. package/lib-commonjs/telemetry.js.map +1 -1
  10. package/lib-commonjs/test/basePropUtils.test.js +138 -0
  11. package/lib-commonjs/test/basePropUtils.test.js.map +1 -0
  12. package/lib-commonjs/test/errorUtils.test.d.ts +7 -0
  13. package/lib-commonjs/test/errorUtils.test.js +166 -0
  14. package/lib-commonjs/test/errorUtils.test.js.map +1 -0
  15. package/lib-commonjs/test/projectUtils.test.d.ts +7 -0
  16. package/lib-commonjs/test/projectUtils.test.js +88 -0
  17. package/lib-commonjs/test/projectUtils.test.js.map +1 -0
  18. package/lib-commonjs/test/sanitizeUtils.test.d.ts +7 -0
  19. package/lib-commonjs/test/sanitizeUtils.test.js +98 -0
  20. package/lib-commonjs/test/sanitizeUtils.test.js.map +1 -0
  21. package/lib-commonjs/test/versionUtils.test.d.ts +7 -0
  22. package/lib-commonjs/test/versionUtils.test.js +115 -0
  23. package/lib-commonjs/test/versionUtils.test.js.map +1 -0
  24. package/lib-commonjs/utils/basePropUtils.d.ts +81 -0
  25. package/lib-commonjs/utils/basePropUtils.js +174 -0
  26. package/lib-commonjs/utils/basePropUtils.js.map +1 -0
  27. package/lib-commonjs/utils/errorUtils.d.ts +87 -0
  28. package/lib-commonjs/utils/errorUtils.js +179 -0
  29. package/lib-commonjs/utils/errorUtils.js.map +1 -0
  30. package/lib-commonjs/utils/optionUtils.d.ts +45 -0
  31. package/lib-commonjs/utils/optionUtils.js +96 -0
  32. package/lib-commonjs/utils/optionUtils.js.map +1 -0
  33. package/lib-commonjs/utils/projectUtils.d.ts +50 -0
  34. package/lib-commonjs/utils/projectUtils.js +187 -0
  35. package/lib-commonjs/utils/projectUtils.js.map +1 -0
  36. package/lib-commonjs/utils/sanitizeUtils.d.ts +12 -0
  37. package/lib-commonjs/utils/sanitizeUtils.js +82 -0
  38. package/lib-commonjs/utils/sanitizeUtils.js.map +1 -0
  39. package/lib-commonjs/utils/versionUtils.d.ts +38 -0
  40. package/lib-commonjs/utils/versionUtils.js +156 -0
  41. package/lib-commonjs/utils/versionUtils.js.map +1 -0
  42. package/package.json +37 -21
  43. package/CHANGELOG.json +0 -110
  44. package/CHANGELOG.md +0 -63
  45. package/lib-commonjs/test/sanitize.test.js +0 -220
  46. package/lib-commonjs/test/sanitize.test.js.map +0 -1
  47. /package/lib-commonjs/test/{sanitize.test.d.ts → basePropUtils.test.d.ts} +0 -0
@@ -0,0 +1,82 @@
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.getAnonymizedPath = void 0;
12
+ const path_1 = __importDefault(require("path"));
13
+ const telemetry_1 = require("../telemetry");
14
+ const nodeModules = '\\node_modules\\';
15
+ const windows = '\\windows\\';
16
+ const knownEnvironmentVariablePaths = [
17
+ 'AppData',
18
+ 'LocalAppData',
19
+ 'UserProfile',
20
+ ];
21
+ /**
22
+ * Gets an anonymized version of the given path, suitable for Telemetry.
23
+ * @param filepath The path to anonymize.
24
+ * @param projectRoot Optional root path for the project. Defaults to process.cwd().
25
+ * @returns The anonymized path.
26
+ */
27
+ function getAnonymizedPath(filepath, projectRoot) {
28
+ projectRoot = (projectRoot !== null && projectRoot !== void 0 ? projectRoot : process.cwd())
29
+ .replace(/\//g, '\\')
30
+ .toLowerCase();
31
+ projectRoot = projectRoot.endsWith('\\')
32
+ ? projectRoot.slice(0, -1)
33
+ : projectRoot;
34
+ filepath = filepath.replace(/\//g, '\\');
35
+ const ext = path_1.default.extname(filepath);
36
+ // Check if we're under node_modules
37
+ const nodeModulesIndex = filepath.toLowerCase().lastIndexOf(nodeModules);
38
+ if (nodeModulesIndex >= 0) {
39
+ // We are under node_modules
40
+ // Check if it's an npm package we're tracking
41
+ for (const trackedNpmPackage of telemetry_1.NpmPackagesWeTrack) {
42
+ const startIndex = filepath
43
+ .toLowerCase()
44
+ .lastIndexOf(nodeModules + trackedNpmPackage.replace(/\//g, '\\') + '\\');
45
+ if (startIndex >= 0) {
46
+ // We are under node_modules within an npm package we're tracking, anonymize by removing root
47
+ return ('[node_modules]\\' + filepath.slice(startIndex + nodeModules.length));
48
+ }
49
+ }
50
+ // It's an npm package we're not tracking, anonymize with [node_modules]
51
+ return `[node_modules]\\???${ext}(${filepath.slice(nodeModulesIndex).length - nodeModules.length})`;
52
+ }
53
+ // Check if we're under the projectRoot
54
+ if (filepath.toLowerCase().startsWith(projectRoot)) {
55
+ // We are under the projectRoot
56
+ const rest = filepath.slice(projectRoot.length);
57
+ if (rest.toLowerCase().startsWith(windows)) {
58
+ // We are under the windows path, anonymize with [windows]
59
+ return `[windows]\\???${ext}(${rest.length - windows.length})`;
60
+ }
61
+ else {
62
+ // We are just within the projectRoot, anonymize with [project_dir]
63
+ if (rest === '' || rest === '\\') {
64
+ return '[project_dir]';
65
+ }
66
+ else {
67
+ return `[project_dir]\\???${ext}(${rest.length - (rest.startsWith('\\') ? 1 : 0)})`;
68
+ }
69
+ }
70
+ }
71
+ // Check if we're under a known environmental variable path
72
+ for (const knownPath of knownEnvironmentVariablePaths) {
73
+ if (process.env[knownPath] &&
74
+ filepath.toLowerCase().startsWith(process.env[knownPath].toLowerCase())) {
75
+ return `[${knownPath}]\\???(${filepath.length - process.env[knownPath].length})`;
76
+ }
77
+ }
78
+ // We are somewhere else, anonymize with [path]
79
+ return '[path]';
80
+ }
81
+ exports.getAnonymizedPath = getAnonymizedPath;
82
+ //# sourceMappingURL=sanitizeUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitizeUtils.js","sourceRoot":"","sources":["../../src/utils/sanitizeUtils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport path from 'path';\n\nimport {NpmPackagesWeTrack} from '../telemetry';\n\nconst nodeModules = '\\\\node_modules\\\\';\nconst windows = '\\\\windows\\\\';\n\nconst knownEnvironmentVariablePaths = [\n 'AppData',\n 'LocalAppData',\n 'UserProfile',\n];\n\n/**\n * Gets an anonymized version of the given path, suitable for Telemetry.\n * @param filepath The path to anonymize.\n * @param projectRoot Optional root path for the project. Defaults to process.cwd().\n * @returns The anonymized path.\n */\nexport function getAnonymizedPath(\n filepath: string,\n projectRoot?: string,\n): string {\n projectRoot = (projectRoot ?? process.cwd())\n .replace(/\\//g, '\\\\')\n .toLowerCase();\n projectRoot = projectRoot.endsWith('\\\\')\n ? projectRoot.slice(0, -1)\n : projectRoot;\n filepath = filepath.replace(/\\//g, '\\\\');\n\n const ext = path.extname(filepath);\n\n // Check if we're under node_modules\n const nodeModulesIndex = filepath.toLowerCase().lastIndexOf(nodeModules);\n if (nodeModulesIndex >= 0) {\n // We are under node_modules\n\n // Check if it's an npm package we're tracking\n for (const trackedNpmPackage of NpmPackagesWeTrack) {\n const startIndex = filepath\n .toLowerCase()\n .lastIndexOf(\n nodeModules + trackedNpmPackage.replace(/\\//g, '\\\\') + '\\\\',\n );\n if (startIndex >= 0) {\n // We are under node_modules within an npm package we're tracking, anonymize by removing root\n return (\n '[node_modules]\\\\' + filepath.slice(startIndex + nodeModules.length)\n );\n }\n }\n\n // It's an npm package we're not tracking, anonymize with [node_modules]\n return `[node_modules]\\\\???${ext}(${\n filepath.slice(nodeModulesIndex).length - nodeModules.length\n })`;\n }\n\n // Check if we're under the projectRoot\n if (filepath.toLowerCase().startsWith(projectRoot)) {\n // We are under the projectRoot\n const rest = filepath.slice(projectRoot.length);\n if (rest.toLowerCase().startsWith(windows)) {\n // We are under the windows path, anonymize with [windows]\n return `[windows]\\\\???${ext}(${rest.length - windows.length})`;\n } else {\n // We are just within the projectRoot, anonymize with [project_dir]\n if (rest === '' || rest === '\\\\') {\n return '[project_dir]';\n } else {\n return `[project_dir]\\\\???${ext}(${\n rest.length - (rest.startsWith('\\\\') ? 1 : 0)\n })`;\n }\n }\n }\n\n // Check if we're under a known environmental variable path\n for (const knownPath of knownEnvironmentVariablePaths) {\n if (\n process.env[knownPath] &&\n filepath.toLowerCase().startsWith(process.env[knownPath]!.toLowerCase())\n ) {\n return `[${knownPath}]\\\\???(${\n filepath.length - process.env[knownPath]!.length\n })`;\n }\n }\n\n // We are somewhere else, anonymize with [path]\n return '[path]';\n}\n"]}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation.
3
+ * Licensed under the MIT License.
4
+ * @format
5
+ */
6
+ /**
7
+ * Gets the version of node being used.
8
+ * @returns The version of node being used.
9
+ */
10
+ export declare function getNodeVersion(): Promise<string | null>;
11
+ /**
12
+ * Gets the version of npm installed, if available.
13
+ * @returns The version of npm installed, if available.
14
+ */
15
+ export declare function getNpmVersion(): Promise<string | null>;
16
+ /**
17
+ * Gets the version of yarn installed, if available.
18
+ * @returns The version of yarn installed, if available.
19
+ */
20
+ export declare function getYarnVersion(): Promise<string | null>;
21
+ /**
22
+ * Gets the latest version of Visual Studio installed, if available.
23
+ * @returns The latest version of Visual Studio installed, if available.
24
+ */
25
+ export declare function getVisualStudioVersion(): Promise<string | null>;
26
+ /**
27
+ * Gets the version installed of the specified npm package.
28
+ * @param pkgName The npm package name.
29
+ * @returns The version installed, if available.
30
+ */
31
+ export declare function getVersionOfNpmPackage(pkgName: string): Promise<string | null>;
32
+ /**
33
+ * Gets the versions of the specified NuGet packages referenced in a project file.
34
+ * @param projectFile Path to the native project file.
35
+ * @param nugetPackages The NuGet package names to look for.
36
+ * @returns The mapping of NuGet package names and their versions.
37
+ */
38
+ export declare function getVersionsOfNuGetPackages(projectFile: string, nugetPackages: string[]): Promise<Record<string, string>>;
@@ -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.config 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.config 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,38 +1,50 @@
1
1
  {
2
2
  "name": "@react-native-windows/telemetry",
3
- "version": "0.0.0-canary.8",
3
+ "version": "0.0.0-canary.80",
4
4
  "license": "MIT",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "typings": "lib-commonjs/index.d.ts",
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "git@github.com:microsoft/react-native-windows.git",
9
+ "url": "https://github.com/microsoft/react-native-windows",
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.30",
22
+ "@xmldom/xmldom": "^0.7.7",
23
+ "applicationinsights": "^2.3.1",
24
+ "ci-info": "^3.2.0",
25
+ "envinfo": "^7.8.1",
26
+ "lodash": "^4.17.21",
27
+ "os-locale": "^5.0.0",
28
+ "xpath": "^0.0.27"
22
29
  },
23
30
  "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",
31
+ "@rnw-scripts/eslint-config": "1.2.4",
32
+ "@rnw-scripts/jest-unittest-config": "1.5.6",
33
+ "@rnw-scripts/just-task": "2.3.18",
34
+ "@rnw-scripts/ts-config": "2.0.5",
35
+ "@types/envinfo": "^7.8.1",
36
+ "@types/jest": "^29.2.2",
37
+ "@types/node": "^18.0.0",
29
38
  "@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"
39
+ "@typescript-eslint/eslint-plugin": "^5.30.5",
40
+ "@typescript-eslint/parser": "^5.57.1",
41
+ "babel-jest": "^29.3.0",
42
+ "eslint": "^8.19.0",
43
+ "jest": "^29.2.1",
44
+ "lookpath": "^1.2.1",
45
+ "prettier": "^2.4.1",
46
+ "semver": "^7.3.5",
47
+ "typescript": "^4.9.5"
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": ">= 18"
64
+ }
49
65
  }
package/CHANGELOG.json DELETED
@@ -1,110 +0,0 @@
1
- {
2
- "name": "@react-native-windows/telemetry",
3
- "entries": [
4
- {
5
- "date": "Mon, 16 Nov 2020 14:38:48 GMT",
6
- "tag": "@react-native-windows/telemetry_v0.0.0-canary.8",
7
- "version": "0.0.0-canary.8",
8
- "comments": {
9
- "prerelease": [
10
- {
11
- "comment": "anonymize paths with forward slashes and file shares",
12
- "author": "asklar@microsoft.com",
13
- "commit": "04e766ef7304d0852a06e772cbfc1982897a3808",
14
- "package": "@react-native-windows/telemetry"
15
- }
16
- ]
17
- }
18
- },
19
- {
20
- "date": "Thu, 12 Nov 2020 05:05:57 GMT",
21
- "tag": "@react-native-windows/telemetry_v0.0.0-canary.7",
22
- "version": "0.0.0-canary.7",
23
- "comments": {
24
- "prerelease": [
25
- {
26
- "comment": "Disable telemetry in other CI systems",
27
- "author": "asklar@microsoft.com",
28
- "commit": "bcda5759d5d1bed770e7a8524e5cc3f94cbc0c6a",
29
- "package": "@react-native-windows/telemetry"
30
- }
31
- ]
32
- }
33
- },
34
- {
35
- "date": "Wed, 11 Nov 2020 05:05:29 GMT",
36
- "tag": "@react-native-windows/telemetry_v0.0.0-canary.6",
37
- "version": "0.0.0-canary.6",
38
- "comments": {
39
- "prerelease": [
40
- {
41
- "comment": "Silence warnings from appinsights in production",
42
- "author": "asklar@microsoft.com",
43
- "commit": "1893d23fce2daedbf55ae90c5f6775141400f401",
44
- "package": "@react-native-windows/telemetry"
45
- }
46
- ]
47
- }
48
- },
49
- {
50
- "date": "Sat, 07 Nov 2020 05:04:58 GMT",
51
- "tag": "@react-native-windows/telemetry_v0.0.0-canary.5",
52
- "version": "0.0.0-canary.5",
53
- "comments": {
54
- "prerelease": [
55
- {
56
- "comment": "Fix casing of msft domain",
57
- "author": "asklar@microsoft.com",
58
- "commit": "038cecd6638df6df39988fca433a104e82b3423e",
59
- "package": "@react-native-windows/telemetry"
60
- }
61
- ]
62
- }
63
- },
64
- {
65
- "date": "Fri, 06 Nov 2020 05:06:31 GMT",
66
- "tag": "@react-native-windows/telemetry_v0.0.0-canary.4",
67
- "version": "0.0.0-canary.4",
68
- "comments": {
69
- "prerelease": [
70
- {
71
- "comment": "Remove roleInstance property",
72
- "author": "asklar@microsoft.com",
73
- "commit": "9254556d1726e6bec145a50c9935fae868060444",
74
- "package": "@react-native-windows/telemetry"
75
- }
76
- ]
77
- }
78
- },
79
- {
80
- "date": "Thu, 05 Nov 2020 17:30:59 GMT",
81
- "tag": "@react-native-windows/telemetry_v0.0.0-canary.3",
82
- "version": "0.0.0-canary.3",
83
- "comments": {
84
- "prerelease": [
85
- {
86
- "comment": "sanitize paths in other drives too",
87
- "author": "asklar@microsoft.com",
88
- "commit": "10d82a2167557800fd518a13c170bdc7e7bffc14",
89
- "package": "@react-native-windows/telemetry"
90
- }
91
- ]
92
- }
93
- },
94
- {
95
- "date": "Thu, 05 Nov 2020 05:05:45 GMT",
96
- "tag": "@react-native-windows/telemetry_v0.0.0-canary.2",
97
- "version": "0.0.0-canary.2",
98
- "comments": {
99
- "prerelease": [
100
- {
101
- "comment": "Create telemetry package",
102
- "author": "asklar@microsoft.com",
103
- "commit": "61cc42e7f9b4dec313597fba6e99c6f22badbf7e",
104
- "package": "@react-native-windows/telemetry"
105
- }
106
- ]
107
- }
108
- }
109
- ]
110
- }
package/CHANGELOG.md DELETED
@@ -1,63 +0,0 @@
1
- # Change Log - @react-native-windows/telemetry
2
-
3
- This log was last generated on Mon, 16 Nov 2020 14:38:48 GMT and should not be manually modified.
4
-
5
- <!-- Start content -->
6
-
7
- ## 0.0.0-canary.8
8
-
9
- Mon, 16 Nov 2020 14:38:48 GMT
10
-
11
- ### Changes
12
-
13
- - anonymize paths with forward slashes and file shares (asklar@microsoft.com)
14
-
15
- ## 0.0.0-canary.7
16
-
17
- Thu, 12 Nov 2020 05:05:57 GMT
18
-
19
- ### Changes
20
-
21
- - Disable telemetry in other CI systems (asklar@microsoft.com)
22
-
23
- ## 0.0.0-canary.6
24
-
25
- Wed, 11 Nov 2020 05:05:29 GMT
26
-
27
- ### Changes
28
-
29
- - Silence warnings from appinsights in production (asklar@microsoft.com)
30
-
31
- ## 0.0.0-canary.5
32
-
33
- Sat, 07 Nov 2020 05:04:58 GMT
34
-
35
- ### Changes
36
-
37
- - Fix casing of msft domain (asklar@microsoft.com)
38
-
39
- ## 0.0.0-canary.4
40
-
41
- Fri, 06 Nov 2020 05:06:31 GMT
42
-
43
- ### Changes
44
-
45
- - Remove roleInstance property (asklar@microsoft.com)
46
-
47
- ## 0.0.0-canary.3
48
-
49
- Thu, 05 Nov 2020 17:30:59 GMT
50
-
51
- ### Changes
52
-
53
- - sanitize paths in other drives too (asklar@microsoft.com)
54
-
55
- ## 0.0.0-canary.2
56
-
57
- Thu, 05 Nov 2020 05:05:45 GMT
58
-
59
- ### Changes
60
-
61
- - Create telemetry package (asklar@microsoft.com)
62
-
63
- # Change Log - @react-native-windows/telemetry