@react-native-windows/cli 0.0.0-canary.28 → 0.0.0-canary.281
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/README.md +117 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindows.d.ts +88 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindows.js +705 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindows.js.map +1 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.d.ts +14 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.js +33 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.js.map +1 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindows.d.ts +27 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindows.js +211 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindows.js.map +1 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.d.ts +12 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.js +23 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.js.map +1 -0
- package/lib-commonjs/{config → commands/config}/configUtils.d.ts +141 -93
- package/lib-commonjs/commands/config/configUtils.js +433 -0
- package/lib-commonjs/commands/config/configUtils.js.map +1 -0
- package/lib-commonjs/{config → commands/config}/dependencyConfig.d.ts +38 -37
- package/lib-commonjs/{config → commands/config}/dependencyConfig.js +229 -171
- package/lib-commonjs/commands/config/dependencyConfig.js.map +1 -0
- package/lib-commonjs/{config → commands/config}/projectConfig.d.ts +28 -25
- package/lib-commonjs/commands/config/projectConfig.js +191 -0
- package/lib-commonjs/commands/config/projectConfig.js.map +1 -0
- package/lib-commonjs/commands/healthCheck/healthCheckList.d.ts +6 -0
- package/lib-commonjs/commands/healthCheck/healthCheckList.js +21 -0
- package/lib-commonjs/commands/healthCheck/healthCheckList.js.map +1 -0
- package/lib-commonjs/commands/healthCheck/healthChecks.d.ts +7 -0
- package/lib-commonjs/commands/healthCheck/healthChecks.js +121 -0
- package/lib-commonjs/commands/healthCheck/healthChecks.js.map +1 -0
- package/lib-commonjs/commands/initWindows/initWindows.d.ts +46 -0
- package/lib-commonjs/commands/initWindows/initWindows.js +290 -0
- package/lib-commonjs/commands/initWindows/initWindows.js.map +1 -0
- package/lib-commonjs/commands/initWindows/initWindowsOptions.d.ts +16 -0
- package/lib-commonjs/commands/initWindows/initWindowsOptions.js +42 -0
- package/lib-commonjs/commands/initWindows/initWindowsOptions.js.map +1 -0
- package/lib-commonjs/{runWindows → commands/runWindows}/runWindows.d.ts +10 -10
- package/lib-commonjs/commands/runWindows/runWindows.js +327 -0
- package/lib-commonjs/commands/runWindows/runWindows.js.map +1 -0
- package/lib-commonjs/{runWindows → commands/runWindows}/runWindowsOptions.d.ts +54 -52
- package/lib-commonjs/{runWindows → commands/runWindows}/runWindowsOptions.js +128 -131
- package/lib-commonjs/commands/runWindows/runWindowsOptions.js.map +1 -0
- package/lib-commonjs/e2etest/autolink.test.d.ts +6 -0
- package/lib-commonjs/e2etest/autolink.test.js +367 -0
- package/lib-commonjs/e2etest/autolink.test.js.map +1 -0
- package/lib-commonjs/e2etest/createRnwApp.test.d.ts +6 -0
- package/lib-commonjs/e2etest/createRnwApp.test.js +296 -0
- package/lib-commonjs/e2etest/createRnwApp.test.js.map +1 -0
- package/lib-commonjs/e2etest/dependencyConfig.test.d.ts +6 -6
- package/lib-commonjs/e2etest/dependencyConfig.test.js +109 -101
- package/lib-commonjs/e2etest/dependencyConfig.test.js.map +1 -1
- package/lib-commonjs/e2etest/healthChecks.test.d.ts +6 -0
- package/lib-commonjs/e2etest/healthChecks.test.js +31 -0
- package/lib-commonjs/e2etest/healthChecks.test.js.map +1 -0
- package/lib-commonjs/e2etest/initWindows.test.d.ts +6 -0
- package/lib-commonjs/e2etest/initWindows.test.js +110 -0
- package/lib-commonjs/e2etest/initWindows.test.js.map +1 -0
- package/lib-commonjs/e2etest/projectConfig.test.d.ts +6 -6
- package/lib-commonjs/e2etest/projectConfig.test.js +107 -101
- package/lib-commonjs/e2etest/projectConfig.test.js.map +1 -1
- package/lib-commonjs/e2etest/projectConfig.utils.d.ts +8 -0
- package/lib-commonjs/e2etest/projectConfig.utils.js +54 -0
- package/lib-commonjs/e2etest/projectConfig.utils.js.map +1 -0
- package/lib-commonjs/e2etest/runWindows.test.d.ts +6 -0
- package/lib-commonjs/e2etest/runWindows.test.js +60 -0
- package/lib-commonjs/e2etest/runWindows.test.js.map +1 -0
- package/lib-commonjs/e2etest/typesUpToDate.test.d.ts +6 -0
- package/lib-commonjs/e2etest/typesUpToDate.test.js +21 -0
- package/lib-commonjs/e2etest/typesUpToDate.test.js.map +1 -0
- package/lib-commonjs/generator-common/index.d.ts +39 -39
- package/lib-commonjs/generator-common/index.js +242 -222
- package/lib-commonjs/generator-common/index.js.map +1 -1
- package/lib-commonjs/generator-windows/index.d.ts +10 -10
- package/lib-commonjs/generator-windows/index.js +331 -366
- package/lib-commonjs/generator-windows/index.js.map +1 -1
- package/lib-commonjs/index.d.ts +49 -47
- package/lib-commonjs/index.js +77 -39
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/{runWindows/utils → utils}/build.d.ts +12 -13
- package/lib-commonjs/{runWindows/utils → utils}/build.js +89 -91
- package/lib-commonjs/utils/build.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/checkRequirements.d.ts +6 -6
- package/lib-commonjs/{runWindows/utils → utils}/checkRequirements.js +69 -65
- package/lib-commonjs/utils/checkRequirements.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/commandWithProgress.d.ts +21 -13
- package/lib-commonjs/{runWindows/utils → utils}/commandWithProgress.js +149 -113
- package/lib-commonjs/utils/commandWithProgress.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/deploy.d.ts +12 -12
- package/lib-commonjs/utils/deploy.js +351 -0
- package/lib-commonjs/utils/deploy.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/info.d.ts +6 -6
- package/lib-commonjs/{runWindows/utils → utils}/info.js +28 -25
- package/lib-commonjs/utils/info.js.map +1 -0
- package/lib-commonjs/utils/msbuildtools.d.ts +28 -0
- package/lib-commonjs/utils/msbuildtools.js +280 -0
- package/lib-commonjs/utils/msbuildtools.js.map +1 -0
- package/lib-commonjs/utils/nameHelpers.d.ts +9 -0
- package/lib-commonjs/utils/nameHelpers.js +46 -0
- package/lib-commonjs/utils/nameHelpers.js.map +1 -0
- package/lib-commonjs/utils/oldArchWarning.d.ts +9 -0
- package/lib-commonjs/utils/oldArchWarning.js +29 -0
- package/lib-commonjs/utils/oldArchWarning.js.map +1 -0
- package/lib-commonjs/utils/pathHelpers.d.ts +6 -0
- package/lib-commonjs/utils/pathHelpers.js +19 -0
- package/lib-commonjs/utils/pathHelpers.js.map +1 -0
- package/lib-commonjs/utils/telemetryHelpers.d.ts +29 -0
- package/lib-commonjs/utils/telemetryHelpers.js +127 -0
- package/lib-commonjs/utils/telemetryHelpers.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/version.d.ts +19 -19
- package/lib-commonjs/{runWindows/utils → utils}/version.js +109 -109
- package/lib-commonjs/utils/version.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/vsInstalls.d.ts +34 -34
- package/lib-commonjs/utils/vsInstalls.js +102 -0
- package/lib-commonjs/utils/vsInstalls.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/vstools.d.ts +16 -16
- package/lib-commonjs/{runWindows/utils → utils}/vstools.js +189 -157
- package/lib-commonjs/utils/vstools.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/winappdeploytool.d.ts +24 -24
- package/lib-commonjs/{runWindows/utils → utils}/winappdeploytool.js +108 -105
- package/lib-commonjs/utils/winappdeploytool.js.map +1 -0
- package/package.json +50 -31
- package/{powershell → src/powershell}/Add-AppDevPackage.ps1 +2 -2
- package/src/powershell/Eval-MsBuildProperties.ps1 +156 -0
- package/src/powershell/WindowsStoreAppUtils.psm1 +465 -0
- package/CHANGELOG.json +0 -443
- package/CHANGELOG.md +0 -216
- package/lib-commonjs/config/configUtils.js +0 -253
- package/lib-commonjs/config/configUtils.js.map +0 -1
- package/lib-commonjs/config/dependencyConfig.js.map +0 -1
- package/lib-commonjs/config/projectConfig.js +0 -121
- package/lib-commonjs/config/projectConfig.js.map +0 -1
- package/lib-commonjs/runWindows/runWindows.js +0 -159
- package/lib-commonjs/runWindows/runWindows.js.map +0 -1
- package/lib-commonjs/runWindows/runWindowsOptions.js.map +0 -1
- package/lib-commonjs/runWindows/utils/autolink.d.ts +0 -7
- package/lib-commonjs/runWindows/utils/autolink.js +0 -404
- package/lib-commonjs/runWindows/utils/autolink.js.map +0 -1
- package/lib-commonjs/runWindows/utils/build.js.map +0 -1
- package/lib-commonjs/runWindows/utils/checkRequirements.js.map +0 -1
- package/lib-commonjs/runWindows/utils/commandWithProgress.js.map +0 -1
- package/lib-commonjs/runWindows/utils/deploy.js +0 -247
- package/lib-commonjs/runWindows/utils/deploy.js.map +0 -1
- package/lib-commonjs/runWindows/utils/info.js.map +0 -1
- package/lib-commonjs/runWindows/utils/msbuildtools.d.ts +0 -22
- package/lib-commonjs/runWindows/utils/msbuildtools.js +0 -195
- package/lib-commonjs/runWindows/utils/msbuildtools.js.map +0 -1
- package/lib-commonjs/runWindows/utils/version.js.map +0 -1
- package/lib-commonjs/runWindows/utils/vsInstalls.js +0 -70
- package/lib-commonjs/runWindows/utils/vsInstalls.js.map +0 -1
- package/lib-commonjs/runWindows/utils/vstools.js.map +0 -1
- package/lib-commonjs/runWindows/utils/winappdeploytool.js.map +0 -1
- package/powershell/WindowsStoreAppUtils.ps1 +0 -264
|
@@ -1,102 +1,110 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
-
* Licensed under the MIT License.
|
|
5
|
-
* @format
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
//
|
|
27
|
-
project('
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
await
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
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
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const dependencyConfig_1 = require("../commands/config/dependencyConfig");
|
|
13
|
+
const projectConfig_utils_1 = require("./projectConfig.utils");
|
|
14
|
+
const generator_common_1 = require("../generator-common");
|
|
15
|
+
function project(name, setup) {
|
|
16
|
+
return [name, setup];
|
|
17
|
+
}
|
|
18
|
+
const projects = [
|
|
19
|
+
// Nothing but a react-native.config.js, with nulls
|
|
20
|
+
project('BlankLib'),
|
|
21
|
+
// Nothing but a windows folder
|
|
22
|
+
project('MissingProjectFilesLib', async (folder) => {
|
|
23
|
+
const windowsDir = path_1.default.join(folder, 'windows');
|
|
24
|
+
await (0, projectConfig_utils_1.tryMkdir)(windowsDir);
|
|
25
|
+
}),
|
|
26
|
+
// New C++ app project based on the template
|
|
27
|
+
project('SimpleCppApp', async (folder) => {
|
|
28
|
+
await (0, projectConfig_utils_1.ensureCppAppProject)(folder, 'SimpleCppApp');
|
|
29
|
+
}),
|
|
30
|
+
// New C++ project based on the template
|
|
31
|
+
project('SimpleCppLib', async (folder) => {
|
|
32
|
+
const windowsDir = path_1.default.join(folder, 'windows');
|
|
33
|
+
await (0, projectConfig_utils_1.tryMkdir)(windowsDir);
|
|
34
|
+
const replacements = {
|
|
35
|
+
name: 'SimpleCppLib',
|
|
36
|
+
namespace: 'SimpleCppLib',
|
|
37
|
+
useMustache: true,
|
|
38
|
+
projectGuidUpper: projectConfig_utils_1.testProjectGuid,
|
|
39
|
+
projectGuidLower: projectConfig_utils_1.testProjectGuid.toLowerCase(),
|
|
40
|
+
};
|
|
41
|
+
await (0, generator_common_1.copyAndReplace)(path_1.default.join(projectConfig_utils_1.templateRoot, 'cpp-lib/windows/MyLib.sln'), path_1.default.join(windowsDir, 'SimpleCppLib.sln'), replacements, null);
|
|
42
|
+
const projDir = path_1.default.join(windowsDir, 'SimpleCppLib');
|
|
43
|
+
await (0, projectConfig_utils_1.tryMkdir)(projDir);
|
|
44
|
+
await (0, generator_common_1.copyAndReplace)(path_1.default.join(projectConfig_utils_1.templateRoot, 'cpp-lib/windows/MyLib/MyLib.vcxproj'), path_1.default.join(projDir, 'SimpleCppLib.vcxproj'), replacements, null);
|
|
45
|
+
}),
|
|
46
|
+
project('WithIndirectDependency'),
|
|
47
|
+
];
|
|
48
|
+
// Tests that given userConfig is null, the result will always be null
|
|
49
|
+
test.each(projects)('dependencyConfig - %s (userConfig is null)', async (name, setup) => {
|
|
50
|
+
const folder = path_1.default.resolve('src/e2etest/projects/', name);
|
|
51
|
+
if (setup !== undefined) {
|
|
52
|
+
await setup(folder);
|
|
53
|
+
}
|
|
54
|
+
const userConfig = null;
|
|
55
|
+
expect((0, dependencyConfig_1.dependencyConfigWindows)(folder, userConfig)).toBeNull();
|
|
56
|
+
});
|
|
57
|
+
// Tests the result given a windows project config in react-native.config.js
|
|
58
|
+
test.each(projects)('dependencyConfig - %s (Use react-native.config.js)', async (name, setup) => {
|
|
59
|
+
const folder = path_1.default.resolve('src/e2etest/projects/', name);
|
|
60
|
+
const rnc = require(path_1.default.join(folder, 'react-native.config.js'));
|
|
61
|
+
if (setup !== undefined) {
|
|
62
|
+
await setup(folder);
|
|
63
|
+
}
|
|
64
|
+
const userConfig = rnc.dependency.platforms.windows;
|
|
65
|
+
if (name === 'BlankLib') {
|
|
66
|
+
expect((0, dependencyConfig_1.dependencyConfigWindows)(folder, userConfig)).toMatchSnapshot();
|
|
67
|
+
}
|
|
68
|
+
else if (name.endsWith('App')) {
|
|
69
|
+
expect((0, dependencyConfig_1.dependencyConfigWindows)(folder, userConfig)).toMatchSnapshot({
|
|
70
|
+
folder: expect.stringContaining(name),
|
|
71
|
+
projects: expect.arrayContaining([
|
|
72
|
+
expect.objectContaining({
|
|
73
|
+
projectFile: expect.stringMatching(/Error: .*\.(?:cs|vcx)proj is type '\w+'/),
|
|
74
|
+
}),
|
|
75
|
+
]),
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
expect((0, dependencyConfig_1.dependencyConfigWindows)(folder, userConfig)).toMatchSnapshot({
|
|
80
|
+
folder: expect.stringContaining(name),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
// Tests the result of ignoring the windows project config in react-native.config.js
|
|
85
|
+
test.each(projects)('dependencyConfig - %s (Ignore react-native.config.js)', async (name, setup) => {
|
|
86
|
+
const folder = path_1.default.resolve('src/e2etest/projects/', name);
|
|
87
|
+
if (setup !== undefined) {
|
|
88
|
+
await setup(folder);
|
|
89
|
+
}
|
|
90
|
+
const userConfig = {};
|
|
91
|
+
if (name === 'BlankLib') {
|
|
92
|
+
expect((0, dependencyConfig_1.dependencyConfigWindows)(folder, userConfig)).toMatchSnapshot();
|
|
93
|
+
}
|
|
94
|
+
else if (name.endsWith('App')) {
|
|
95
|
+
expect((0, dependencyConfig_1.dependencyConfigWindows)(folder, userConfig)).toMatchSnapshot({
|
|
96
|
+
folder: expect.stringContaining(name),
|
|
97
|
+
projects: expect.arrayContaining([
|
|
98
|
+
expect.objectContaining({
|
|
99
|
+
projectFile: expect.stringMatching(/Error: .*\.(?:cs|vcx)proj is type '\w+'/),
|
|
100
|
+
}),
|
|
101
|
+
]),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
expect((0, dependencyConfig_1.dependencyConfigWindows)(folder, userConfig)).toMatchSnapshot({
|
|
106
|
+
folder: expect.stringContaining(name),
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
});
|
|
102
110
|
//# sourceMappingURL=dependencyConfig.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencyConfig.test.js","sourceRoot":"","sources":["../../src/e2etest/dependencyConfig.test.ts"],"names":[],"mappings":";AAAA;;;;GAIG
|
|
1
|
+
{"version":3,"file":"dependencyConfig.test.js","sourceRoot":"","sources":["../../src/e2etest/dependencyConfig.test.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n * @format\n */\n\nimport path from 'path';\n\nimport {\n dependencyConfigWindows,\n WindowsDependencyConfig,\n} from '../commands/config/dependencyConfig';\n\nimport {\n ensureCppAppProject,\n tryMkdir,\n templateRoot,\n testProjectGuid,\n} from './projectConfig.utils';\n\nimport {copyAndReplace} from '../generator-common';\n\ntype TargetProject = [string, ((folder: string) => Promise<void>)?];\n\nfunction project(\n name: string,\n setup?: (folder: string) => Promise<void>,\n): TargetProject {\n return [name, setup];\n}\n\nconst projects: TargetProject[] = [\n // Nothing but a react-native.config.js, with nulls\n project('BlankLib'),\n // Nothing but a windows folder\n project('MissingProjectFilesLib', async (folder: string) => {\n const windowsDir = path.join(folder, 'windows');\n await tryMkdir(windowsDir);\n }),\n // New C++ app project based on the template\n project('SimpleCppApp', async (folder: string) => {\n await ensureCppAppProject(folder, 'SimpleCppApp');\n }),\n // New C++ project based on the template\n project('SimpleCppLib', async (folder: string) => {\n const windowsDir = path.join(folder, 'windows');\n await tryMkdir(windowsDir);\n\n const replacements = {\n name: 'SimpleCppLib',\n namespace: 'SimpleCppLib',\n useMustache: true,\n projectGuidUpper: testProjectGuid,\n projectGuidLower: testProjectGuid.toLowerCase(),\n };\n\n await copyAndReplace(\n path.join(templateRoot, 'cpp-lib/windows/MyLib.sln'),\n path.join(windowsDir, 'SimpleCppLib.sln'),\n replacements,\n null,\n );\n\n const projDir = path.join(windowsDir, 'SimpleCppLib');\n await tryMkdir(projDir);\n\n await copyAndReplace(\n path.join(templateRoot, 'cpp-lib/windows/MyLib/MyLib.vcxproj'),\n path.join(projDir, 'SimpleCppLib.vcxproj'),\n replacements,\n null,\n );\n }),\n project('WithIndirectDependency'),\n];\n\n// Tests that given userConfig is null, the result will always be null\ntest.each(projects)(\n 'dependencyConfig - %s (userConfig is null)',\n async (name, setup) => {\n const folder = path.resolve('src/e2etest/projects/', name);\n\n if (setup !== undefined) {\n await setup(folder);\n }\n\n const userConfig = null;\n\n expect(dependencyConfigWindows(folder, userConfig)).toBeNull();\n },\n);\n\n// Tests the result given a windows project config in react-native.config.js\ntest.each(projects)(\n 'dependencyConfig - %s (Use react-native.config.js)',\n async (name, setup) => {\n const folder = path.resolve('src/e2etest/projects/', name);\n const rnc = require(path.join(folder, 'react-native.config.js'));\n\n if (setup !== undefined) {\n await setup(folder);\n }\n\n const userConfig: Partial<WindowsDependencyConfig> =\n rnc.dependency.platforms.windows;\n\n if (name === 'BlankLib') {\n expect(dependencyConfigWindows(folder, userConfig)).toMatchSnapshot();\n } else if (name.endsWith('App')) {\n expect(dependencyConfigWindows(folder, userConfig)).toMatchSnapshot({\n folder: expect.stringContaining(name),\n projects: expect.arrayContaining([\n expect.objectContaining({\n projectFile: expect.stringMatching(\n /Error: .*\\.(?:cs|vcx)proj is type '\\w+'/,\n ),\n }),\n ]),\n });\n } else {\n expect(dependencyConfigWindows(folder, userConfig)).toMatchSnapshot({\n folder: expect.stringContaining(name),\n });\n }\n },\n);\n\n// Tests the result of ignoring the windows project config in react-native.config.js\ntest.each(projects)(\n 'dependencyConfig - %s (Ignore react-native.config.js)',\n async (name, setup) => {\n const folder = path.resolve('src/e2etest/projects/', name);\n\n if (setup !== undefined) {\n await setup(folder);\n }\n\n const userConfig: Partial<WindowsDependencyConfig> = {};\n\n if (name === 'BlankLib') {\n expect(dependencyConfigWindows(folder, userConfig)).toMatchSnapshot();\n } else if (name.endsWith('App')) {\n expect(dependencyConfigWindows(folder, userConfig)).toMatchSnapshot({\n folder: expect.stringContaining(name),\n projects: expect.arrayContaining([\n expect.objectContaining({\n projectFile: expect.stringMatching(\n /Error: .*\\.(?:cs|vcx)proj is type '\\w+'/,\n ),\n }),\n ]),\n });\n } else {\n expect(dependencyConfigWindows(folder, userConfig)).toMatchSnapshot({\n folder: expect.stringContaining(name),\n });\n }\n },\n);\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
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
|
+
const child_process_1 = require("child_process");
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const commandWithProgress_1 = require("../utils/commandWithProgress");
|
|
14
|
+
const healthCheckList_1 = require("../commands/healthCheck/healthCheckList");
|
|
15
|
+
test('Verify list of health checks aligns with rnw-dependencies', async () => {
|
|
16
|
+
const rnwDepScriptPath = path_1.default.join(path_1.default.dirname(require.resolve('react-native-windows/package.json', {
|
|
17
|
+
paths: [process.cwd()],
|
|
18
|
+
})), 'Scripts/rnw-dependencies.ps1');
|
|
19
|
+
const rnwDeps = (0, child_process_1.execSync)(`${commandWithProgress_1.powershell} -ExecutionPolicy Unrestricted -NoProfile "${rnwDepScriptPath}" -NoPrompt -ListChecks`, { stdio: 'pipe' });
|
|
20
|
+
const deps = rnwDeps.toString().trim().split('\n');
|
|
21
|
+
const rnwHealthChecks = deps.map(dep => {
|
|
22
|
+
const match = /([^:]+): ([^:]+): (.*)/.exec(dep);
|
|
23
|
+
if (!match) {
|
|
24
|
+
throw new Error(`Unexpected output from ${rnwDepScriptPath}`);
|
|
25
|
+
}
|
|
26
|
+
const [, optional, id, name] = match;
|
|
27
|
+
return [optional.trim() === 'Required', id, name];
|
|
28
|
+
});
|
|
29
|
+
expect(healthCheckList_1.HealthCheckList).toEqual(rnwHealthChecks);
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=healthChecks.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"healthChecks.test.js","sourceRoot":"","sources":["../../src/e2etest/healthChecks.test.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;AAEH,iDAAuC;AACvC,gDAAwB;AACxB,sEAAwD;AACxD,6EAAwE;AAExE,IAAI,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;IAC3E,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAChC,cAAI,CAAC,OAAO,CACV,OAAO,CAAC,OAAO,CAAC,mCAAmC,EAAE;QACnD,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;KACvB,CAAC,CACH,EACD,8BAA8B,CAC/B,CAAC;IAEF,MAAM,OAAO,GAAG,IAAA,wBAAQ,EACtB,GAAG,gCAAU,8CAA8C,gBAAgB,yBAAyB,EACpG,EAAC,KAAK,EAAE,MAAM,EAAC,CAChB,CAAC;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACrC,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,0BAA0B,gBAAgB,EAAE,CAAC,CAAC;SAC/D;QACD,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;QACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,iCAAe,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n * @format\n */\n\nimport {execSync} from 'child_process';\nimport path from 'path';\nimport {powershell} from '../utils/commandWithProgress';\nimport {HealthCheckList} from '../commands/healthCheck/healthCheckList';\n\ntest('Verify list of health checks aligns with rnw-dependencies', async () => {\n const rnwDepScriptPath = path.join(\n path.dirname(\n require.resolve('react-native-windows/package.json', {\n paths: [process.cwd()],\n }),\n ),\n 'Scripts/rnw-dependencies.ps1',\n );\n\n const rnwDeps = execSync(\n `${powershell} -ExecutionPolicy Unrestricted -NoProfile \"${rnwDepScriptPath}\" -NoPrompt -ListChecks`,\n {stdio: 'pipe'},\n );\n const deps = rnwDeps.toString().trim().split('\\n');\n const rnwHealthChecks = deps.map(dep => {\n const match = /([^:]+): ([^:]+): (.*)/.exec(dep);\n if (!match) {\n throw new Error(`Unexpected output from ${rnwDepScriptPath}`);\n }\n const [, optional, id, name] = match;\n return [optional.trim() === 'Required', id, name];\n });\n\n expect(HealthCheckList).toEqual(rnwHealthChecks);\n});\n"]}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
* @format
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
24
|
+
if (mod && mod.__esModule) return mod;
|
|
25
|
+
var result = {};
|
|
26
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
27
|
+
__setModuleDefault(result, mod);
|
|
28
|
+
return result;
|
|
29
|
+
};
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
const telemetry_1 = require("@react-native-windows/telemetry");
|
|
32
|
+
const initWindowsOptions_1 = require("../commands/initWindows/initWindowsOptions");
|
|
33
|
+
const nameHelpers = __importStar(require("../utils/nameHelpers"));
|
|
34
|
+
function validateOptionName(name, optionName) {
|
|
35
|
+
// Do not add a default case here. Every item must explicitly return true
|
|
36
|
+
switch (optionName) {
|
|
37
|
+
case 'logging':
|
|
38
|
+
case 'template':
|
|
39
|
+
case 'name':
|
|
40
|
+
case 'namespace':
|
|
41
|
+
case 'overwrite':
|
|
42
|
+
case 'telemetry':
|
|
43
|
+
case 'list':
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
throw new Error(`Unable to find ${optionName} to match '${name}' in InitOptions.`);
|
|
47
|
+
}
|
|
48
|
+
test('initOptions - validate options', () => {
|
|
49
|
+
for (const commandOption of initWindowsOptions_1.initOptions) {
|
|
50
|
+
// Validate names
|
|
51
|
+
expect(commandOption.name).not.toBeNull();
|
|
52
|
+
expect(commandOption.name.startsWith('--')).toBe(true);
|
|
53
|
+
expect(commandOption.name).toBe(commandOption.name.trim());
|
|
54
|
+
// Validate defaults
|
|
55
|
+
if (!commandOption.name.endsWith(' [string]') &&
|
|
56
|
+
!commandOption.name.endsWith(' [number]')) {
|
|
57
|
+
// Commander ignores defaults for flags, so leave undefined to prevent confusion
|
|
58
|
+
expect(commandOption.default).toBeUndefined();
|
|
59
|
+
}
|
|
60
|
+
// Validate description
|
|
61
|
+
expect(commandOption.description).not.toBeNull();
|
|
62
|
+
expect(commandOption.description).toBe(commandOption.description.trim());
|
|
63
|
+
// Validate all command options are present in InitOptions
|
|
64
|
+
const optionName = (0, telemetry_1.commanderNameToOptionName)(commandOption.name);
|
|
65
|
+
expect(validateOptionName(commandOption.name, optionName)).toBe(true);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
test('nameHelpers - cleanName', () => {
|
|
69
|
+
expect(nameHelpers.cleanName('@scope/package')).toBe('Package');
|
|
70
|
+
expect(nameHelpers.cleanName('@scope/package-name')).toBe('PackageName');
|
|
71
|
+
expect(nameHelpers.cleanName('package')).toBe('Package');
|
|
72
|
+
expect(nameHelpers.cleanName('package-name')).toBe('PackageName');
|
|
73
|
+
});
|
|
74
|
+
test('nameHelpers - isValidProjectName', () => {
|
|
75
|
+
expect(nameHelpers.isValidProjectName('package')).toBe(true);
|
|
76
|
+
expect(nameHelpers.isValidProjectName('package-name')).toBe(false);
|
|
77
|
+
expect(nameHelpers.isValidProjectName('Package')).toBe(true);
|
|
78
|
+
expect(nameHelpers.isValidProjectName('Package-name')).toBe(false);
|
|
79
|
+
expect(nameHelpers.isValidProjectName('Package-Name')).toBe(false);
|
|
80
|
+
expect(nameHelpers.isValidProjectName('@scope/package')).toBe(false);
|
|
81
|
+
expect(nameHelpers.isValidProjectName('@scope/package-name')).toBe(false);
|
|
82
|
+
});
|
|
83
|
+
test('nameHelpers - cleanNamespace', () => {
|
|
84
|
+
expect(nameHelpers.cleanNamespace('@scope/package')).toBe('Package');
|
|
85
|
+
expect(nameHelpers.cleanNamespace('@scope/package-name')).toBe('PackageName');
|
|
86
|
+
expect(nameHelpers.cleanNamespace('package')).toBe('Package');
|
|
87
|
+
expect(nameHelpers.cleanNamespace('package-name')).toBe('PackageName');
|
|
88
|
+
expect(nameHelpers.cleanNamespace('com.company.app')).toBe('Com.Company.App');
|
|
89
|
+
expect(nameHelpers.cleanNamespace('com.company.app-name')).toBe('Com.Company.AppName');
|
|
90
|
+
expect(nameHelpers.cleanNamespace('com.company.app-name.other')).toBe('Com.Company.AppName.Other');
|
|
91
|
+
expect(nameHelpers.cleanNamespace('com::company::app')).toBe('Com.Company.App');
|
|
92
|
+
expect(nameHelpers.cleanNamespace('com::company::app-name')).toBe('Com.Company.AppName');
|
|
93
|
+
expect(nameHelpers.cleanNamespace('com::company::app-name::other')).toBe('Com.Company.AppName.Other');
|
|
94
|
+
});
|
|
95
|
+
test('nameHelpers - isValidProjectNamespace', () => {
|
|
96
|
+
expect(nameHelpers.isValidProjectNamespace('package')).toBe(true);
|
|
97
|
+
expect(nameHelpers.isValidProjectNamespace('package-name')).toBe(false);
|
|
98
|
+
expect(nameHelpers.isValidProjectNamespace('Package')).toBe(true);
|
|
99
|
+
expect(nameHelpers.isValidProjectNamespace('Package-name')).toBe(false);
|
|
100
|
+
expect(nameHelpers.isValidProjectNamespace('Package-Name')).toBe(false);
|
|
101
|
+
expect(nameHelpers.isValidProjectNamespace('@scope/package')).toBe(false);
|
|
102
|
+
expect(nameHelpers.isValidProjectNamespace('@scope/package-name')).toBe(false);
|
|
103
|
+
expect(nameHelpers.isValidProjectNamespace('com.company.app')).toBe(true);
|
|
104
|
+
expect(nameHelpers.isValidProjectNamespace('com.company.app-name')).toBe(false);
|
|
105
|
+
expect(nameHelpers.isValidProjectNamespace('com.company.app-name.other')).toBe(false);
|
|
106
|
+
expect(nameHelpers.isValidProjectNamespace('com::company::app')).toBe(false);
|
|
107
|
+
expect(nameHelpers.isValidProjectNamespace('com::company::app-name')).toBe(false);
|
|
108
|
+
expect(nameHelpers.isValidProjectNamespace('com::company::app-name::other')).toBe(false);
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=initWindows.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initWindows.test.js","sourceRoot":"","sources":["../../src/e2etest/initWindows.test.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n * @format\n */\n\nimport {commanderNameToOptionName} from '@react-native-windows/telemetry';\n\nimport {\n initOptions,\n InitOptions,\n} from '../commands/initWindows/initWindowsOptions';\n\nimport * as nameHelpers from '../utils/nameHelpers';\n\nfunction validateOptionName(\n name: string,\n optionName: keyof InitOptions,\n): boolean {\n // Do not add a default case here. Every item must explicitly return true\n switch (optionName) {\n case 'logging':\n case 'template':\n case 'name':\n case 'namespace':\n case 'overwrite':\n case 'telemetry':\n case 'list':\n return true;\n }\n throw new Error(\n `Unable to find ${optionName} to match '${name}' in InitOptions.`,\n );\n}\n\ntest('initOptions - validate options', () => {\n for (const commandOption of initOptions) {\n // Validate names\n expect(commandOption.name).not.toBeNull();\n expect(commandOption.name.startsWith('--')).toBe(true);\n expect(commandOption.name).toBe(commandOption.name.trim());\n\n // Validate defaults\n if (\n !commandOption.name.endsWith(' [string]') &&\n !commandOption.name.endsWith(' [number]')\n ) {\n // Commander ignores defaults for flags, so leave undefined to prevent confusion\n expect(commandOption.default).toBeUndefined();\n }\n\n // Validate description\n expect(commandOption.description).not.toBeNull();\n expect(commandOption.description!).toBe(commandOption.description!.trim());\n\n // Validate all command options are present in InitOptions\n const optionName = commanderNameToOptionName(commandOption.name);\n expect(\n validateOptionName(commandOption.name, optionName as keyof InitOptions),\n ).toBe(true);\n }\n});\n\ntest('nameHelpers - cleanName', () => {\n expect(nameHelpers.cleanName('@scope/package')).toBe('Package');\n expect(nameHelpers.cleanName('@scope/package-name')).toBe('PackageName');\n expect(nameHelpers.cleanName('package')).toBe('Package');\n expect(nameHelpers.cleanName('package-name')).toBe('PackageName');\n});\n\ntest('nameHelpers - isValidProjectName', () => {\n expect(nameHelpers.isValidProjectName('package')).toBe(true);\n expect(nameHelpers.isValidProjectName('package-name')).toBe(false);\n expect(nameHelpers.isValidProjectName('Package')).toBe(true);\n expect(nameHelpers.isValidProjectName('Package-name')).toBe(false);\n expect(nameHelpers.isValidProjectName('Package-Name')).toBe(false);\n expect(nameHelpers.isValidProjectName('@scope/package')).toBe(false);\n expect(nameHelpers.isValidProjectName('@scope/package-name')).toBe(false);\n});\n\ntest('nameHelpers - cleanNamespace', () => {\n expect(nameHelpers.cleanNamespace('@scope/package')).toBe('Package');\n expect(nameHelpers.cleanNamespace('@scope/package-name')).toBe('PackageName');\n expect(nameHelpers.cleanNamespace('package')).toBe('Package');\n expect(nameHelpers.cleanNamespace('package-name')).toBe('PackageName');\n expect(nameHelpers.cleanNamespace('com.company.app')).toBe('Com.Company.App');\n expect(nameHelpers.cleanNamespace('com.company.app-name')).toBe(\n 'Com.Company.AppName',\n );\n expect(nameHelpers.cleanNamespace('com.company.app-name.other')).toBe(\n 'Com.Company.AppName.Other',\n );\n expect(nameHelpers.cleanNamespace('com::company::app')).toBe(\n 'Com.Company.App',\n );\n expect(nameHelpers.cleanNamespace('com::company::app-name')).toBe(\n 'Com.Company.AppName',\n );\n expect(nameHelpers.cleanNamespace('com::company::app-name::other')).toBe(\n 'Com.Company.AppName.Other',\n );\n});\n\ntest('nameHelpers - isValidProjectNamespace', () => {\n expect(nameHelpers.isValidProjectNamespace('package')).toBe(true);\n expect(nameHelpers.isValidProjectNamespace('package-name')).toBe(false);\n expect(nameHelpers.isValidProjectNamespace('Package')).toBe(true);\n expect(nameHelpers.isValidProjectNamespace('Package-name')).toBe(false);\n expect(nameHelpers.isValidProjectNamespace('Package-Name')).toBe(false);\n expect(nameHelpers.isValidProjectNamespace('@scope/package')).toBe(false);\n expect(nameHelpers.isValidProjectNamespace('@scope/package-name')).toBe(\n false,\n );\n expect(nameHelpers.isValidProjectNamespace('com.company.app')).toBe(true);\n expect(nameHelpers.isValidProjectNamespace('com.company.app-name')).toBe(\n false,\n );\n expect(\n nameHelpers.isValidProjectNamespace('com.company.app-name.other'),\n ).toBe(false);\n expect(nameHelpers.isValidProjectNamespace('com::company::app')).toBe(false);\n expect(nameHelpers.isValidProjectNamespace('com::company::app-name')).toBe(\n false,\n );\n expect(\n nameHelpers.isValidProjectNamespace('com::company::app-name::other'),\n ).toBe(false);\n});\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
* @format
|
|
5
|
-
*/
|
|
6
|
-
export {};
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
* @format
|
|
5
|
+
*/
|
|
6
|
+
export {};
|