@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.
Files changed (150) hide show
  1. package/README.md +117 -0
  2. package/lib-commonjs/commands/autolinkWindows/autolinkWindows.d.ts +88 -0
  3. package/lib-commonjs/commands/autolinkWindows/autolinkWindows.js +705 -0
  4. package/lib-commonjs/commands/autolinkWindows/autolinkWindows.js.map +1 -0
  5. package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.d.ts +14 -0
  6. package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.js +33 -0
  7. package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.js.map +1 -0
  8. package/lib-commonjs/commands/codegenWindows/codegenWindows.d.ts +27 -0
  9. package/lib-commonjs/commands/codegenWindows/codegenWindows.js +211 -0
  10. package/lib-commonjs/commands/codegenWindows/codegenWindows.js.map +1 -0
  11. package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.d.ts +12 -0
  12. package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.js +23 -0
  13. package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.js.map +1 -0
  14. package/lib-commonjs/{config → commands/config}/configUtils.d.ts +141 -93
  15. package/lib-commonjs/commands/config/configUtils.js +433 -0
  16. package/lib-commonjs/commands/config/configUtils.js.map +1 -0
  17. package/lib-commonjs/{config → commands/config}/dependencyConfig.d.ts +38 -37
  18. package/lib-commonjs/{config → commands/config}/dependencyConfig.js +229 -171
  19. package/lib-commonjs/commands/config/dependencyConfig.js.map +1 -0
  20. package/lib-commonjs/{config → commands/config}/projectConfig.d.ts +28 -25
  21. package/lib-commonjs/commands/config/projectConfig.js +191 -0
  22. package/lib-commonjs/commands/config/projectConfig.js.map +1 -0
  23. package/lib-commonjs/commands/healthCheck/healthCheckList.d.ts +6 -0
  24. package/lib-commonjs/commands/healthCheck/healthCheckList.js +21 -0
  25. package/lib-commonjs/commands/healthCheck/healthCheckList.js.map +1 -0
  26. package/lib-commonjs/commands/healthCheck/healthChecks.d.ts +7 -0
  27. package/lib-commonjs/commands/healthCheck/healthChecks.js +121 -0
  28. package/lib-commonjs/commands/healthCheck/healthChecks.js.map +1 -0
  29. package/lib-commonjs/commands/initWindows/initWindows.d.ts +46 -0
  30. package/lib-commonjs/commands/initWindows/initWindows.js +290 -0
  31. package/lib-commonjs/commands/initWindows/initWindows.js.map +1 -0
  32. package/lib-commonjs/commands/initWindows/initWindowsOptions.d.ts +16 -0
  33. package/lib-commonjs/commands/initWindows/initWindowsOptions.js +42 -0
  34. package/lib-commonjs/commands/initWindows/initWindowsOptions.js.map +1 -0
  35. package/lib-commonjs/{runWindows → commands/runWindows}/runWindows.d.ts +10 -10
  36. package/lib-commonjs/commands/runWindows/runWindows.js +327 -0
  37. package/lib-commonjs/commands/runWindows/runWindows.js.map +1 -0
  38. package/lib-commonjs/{runWindows → commands/runWindows}/runWindowsOptions.d.ts +54 -52
  39. package/lib-commonjs/{runWindows → commands/runWindows}/runWindowsOptions.js +128 -131
  40. package/lib-commonjs/commands/runWindows/runWindowsOptions.js.map +1 -0
  41. package/lib-commonjs/e2etest/autolink.test.d.ts +6 -0
  42. package/lib-commonjs/e2etest/autolink.test.js +367 -0
  43. package/lib-commonjs/e2etest/autolink.test.js.map +1 -0
  44. package/lib-commonjs/e2etest/createRnwApp.test.d.ts +6 -0
  45. package/lib-commonjs/e2etest/createRnwApp.test.js +296 -0
  46. package/lib-commonjs/e2etest/createRnwApp.test.js.map +1 -0
  47. package/lib-commonjs/e2etest/dependencyConfig.test.d.ts +6 -6
  48. package/lib-commonjs/e2etest/dependencyConfig.test.js +109 -101
  49. package/lib-commonjs/e2etest/dependencyConfig.test.js.map +1 -1
  50. package/lib-commonjs/e2etest/healthChecks.test.d.ts +6 -0
  51. package/lib-commonjs/e2etest/healthChecks.test.js +31 -0
  52. package/lib-commonjs/e2etest/healthChecks.test.js.map +1 -0
  53. package/lib-commonjs/e2etest/initWindows.test.d.ts +6 -0
  54. package/lib-commonjs/e2etest/initWindows.test.js +110 -0
  55. package/lib-commonjs/e2etest/initWindows.test.js.map +1 -0
  56. package/lib-commonjs/e2etest/projectConfig.test.d.ts +6 -6
  57. package/lib-commonjs/e2etest/projectConfig.test.js +107 -101
  58. package/lib-commonjs/e2etest/projectConfig.test.js.map +1 -1
  59. package/lib-commonjs/e2etest/projectConfig.utils.d.ts +8 -0
  60. package/lib-commonjs/e2etest/projectConfig.utils.js +54 -0
  61. package/lib-commonjs/e2etest/projectConfig.utils.js.map +1 -0
  62. package/lib-commonjs/e2etest/runWindows.test.d.ts +6 -0
  63. package/lib-commonjs/e2etest/runWindows.test.js +60 -0
  64. package/lib-commonjs/e2etest/runWindows.test.js.map +1 -0
  65. package/lib-commonjs/e2etest/typesUpToDate.test.d.ts +6 -0
  66. package/lib-commonjs/e2etest/typesUpToDate.test.js +21 -0
  67. package/lib-commonjs/e2etest/typesUpToDate.test.js.map +1 -0
  68. package/lib-commonjs/generator-common/index.d.ts +39 -39
  69. package/lib-commonjs/generator-common/index.js +242 -222
  70. package/lib-commonjs/generator-common/index.js.map +1 -1
  71. package/lib-commonjs/generator-windows/index.d.ts +10 -10
  72. package/lib-commonjs/generator-windows/index.js +331 -366
  73. package/lib-commonjs/generator-windows/index.js.map +1 -1
  74. package/lib-commonjs/index.d.ts +49 -47
  75. package/lib-commonjs/index.js +77 -39
  76. package/lib-commonjs/index.js.map +1 -1
  77. package/lib-commonjs/{runWindows/utils → utils}/build.d.ts +12 -13
  78. package/lib-commonjs/{runWindows/utils → utils}/build.js +89 -91
  79. package/lib-commonjs/utils/build.js.map +1 -0
  80. package/lib-commonjs/{runWindows/utils → utils}/checkRequirements.d.ts +6 -6
  81. package/lib-commonjs/{runWindows/utils → utils}/checkRequirements.js +69 -65
  82. package/lib-commonjs/utils/checkRequirements.js.map +1 -0
  83. package/lib-commonjs/{runWindows/utils → utils}/commandWithProgress.d.ts +21 -13
  84. package/lib-commonjs/{runWindows/utils → utils}/commandWithProgress.js +149 -113
  85. package/lib-commonjs/utils/commandWithProgress.js.map +1 -0
  86. package/lib-commonjs/{runWindows/utils → utils}/deploy.d.ts +12 -12
  87. package/lib-commonjs/utils/deploy.js +351 -0
  88. package/lib-commonjs/utils/deploy.js.map +1 -0
  89. package/lib-commonjs/{runWindows/utils → utils}/info.d.ts +6 -6
  90. package/lib-commonjs/{runWindows/utils → utils}/info.js +28 -25
  91. package/lib-commonjs/utils/info.js.map +1 -0
  92. package/lib-commonjs/utils/msbuildtools.d.ts +28 -0
  93. package/lib-commonjs/utils/msbuildtools.js +280 -0
  94. package/lib-commonjs/utils/msbuildtools.js.map +1 -0
  95. package/lib-commonjs/utils/nameHelpers.d.ts +9 -0
  96. package/lib-commonjs/utils/nameHelpers.js +46 -0
  97. package/lib-commonjs/utils/nameHelpers.js.map +1 -0
  98. package/lib-commonjs/utils/oldArchWarning.d.ts +9 -0
  99. package/lib-commonjs/utils/oldArchWarning.js +29 -0
  100. package/lib-commonjs/utils/oldArchWarning.js.map +1 -0
  101. package/lib-commonjs/utils/pathHelpers.d.ts +6 -0
  102. package/lib-commonjs/utils/pathHelpers.js +19 -0
  103. package/lib-commonjs/utils/pathHelpers.js.map +1 -0
  104. package/lib-commonjs/utils/telemetryHelpers.d.ts +29 -0
  105. package/lib-commonjs/utils/telemetryHelpers.js +127 -0
  106. package/lib-commonjs/utils/telemetryHelpers.js.map +1 -0
  107. package/lib-commonjs/{runWindows/utils → utils}/version.d.ts +19 -19
  108. package/lib-commonjs/{runWindows/utils → utils}/version.js +109 -109
  109. package/lib-commonjs/utils/version.js.map +1 -0
  110. package/lib-commonjs/{runWindows/utils → utils}/vsInstalls.d.ts +34 -34
  111. package/lib-commonjs/utils/vsInstalls.js +102 -0
  112. package/lib-commonjs/utils/vsInstalls.js.map +1 -0
  113. package/lib-commonjs/{runWindows/utils → utils}/vstools.d.ts +16 -16
  114. package/lib-commonjs/{runWindows/utils → utils}/vstools.js +189 -157
  115. package/lib-commonjs/utils/vstools.js.map +1 -0
  116. package/lib-commonjs/{runWindows/utils → utils}/winappdeploytool.d.ts +24 -24
  117. package/lib-commonjs/{runWindows/utils → utils}/winappdeploytool.js +108 -105
  118. package/lib-commonjs/utils/winappdeploytool.js.map +1 -0
  119. package/package.json +50 -31
  120. package/{powershell → src/powershell}/Add-AppDevPackage.ps1 +2 -2
  121. package/src/powershell/Eval-MsBuildProperties.ps1 +156 -0
  122. package/src/powershell/WindowsStoreAppUtils.psm1 +465 -0
  123. package/CHANGELOG.json +0 -443
  124. package/CHANGELOG.md +0 -216
  125. package/lib-commonjs/config/configUtils.js +0 -253
  126. package/lib-commonjs/config/configUtils.js.map +0 -1
  127. package/lib-commonjs/config/dependencyConfig.js.map +0 -1
  128. package/lib-commonjs/config/projectConfig.js +0 -121
  129. package/lib-commonjs/config/projectConfig.js.map +0 -1
  130. package/lib-commonjs/runWindows/runWindows.js +0 -159
  131. package/lib-commonjs/runWindows/runWindows.js.map +0 -1
  132. package/lib-commonjs/runWindows/runWindowsOptions.js.map +0 -1
  133. package/lib-commonjs/runWindows/utils/autolink.d.ts +0 -7
  134. package/lib-commonjs/runWindows/utils/autolink.js +0 -404
  135. package/lib-commonjs/runWindows/utils/autolink.js.map +0 -1
  136. package/lib-commonjs/runWindows/utils/build.js.map +0 -1
  137. package/lib-commonjs/runWindows/utils/checkRequirements.js.map +0 -1
  138. package/lib-commonjs/runWindows/utils/commandWithProgress.js.map +0 -1
  139. package/lib-commonjs/runWindows/utils/deploy.js +0 -247
  140. package/lib-commonjs/runWindows/utils/deploy.js.map +0 -1
  141. package/lib-commonjs/runWindows/utils/info.js.map +0 -1
  142. package/lib-commonjs/runWindows/utils/msbuildtools.d.ts +0 -22
  143. package/lib-commonjs/runWindows/utils/msbuildtools.js +0 -195
  144. package/lib-commonjs/runWindows/utils/msbuildtools.js.map +0 -1
  145. package/lib-commonjs/runWindows/utils/version.js.map +0 -1
  146. package/lib-commonjs/runWindows/utils/vsInstalls.js +0 -70
  147. package/lib-commonjs/runWindows/utils/vsInstalls.js.map +0 -1
  148. package/lib-commonjs/runWindows/utils/vstools.js.map +0 -1
  149. package/lib-commonjs/runWindows/utils/winappdeploytool.js.map +0 -1
  150. 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
- Object.defineProperty(exports, "__esModule", { value: true });
8
- const fs = require("fs");
9
- const path = require("path");
10
- const dependencyConfig_1 = require("../config/dependencyConfig");
11
- const generator_common_1 = require("../generator-common");
12
- const templateRoot = path.resolve('../../../vnext/template');
13
- const testProjectGuid = '{416476D5-974A-4EE2-8145-4E331297247E}';
14
- async function tryMkdir(dir) {
15
- try {
16
- await fs.promises.mkdir(dir, { recursive: true });
17
- }
18
- catch (err) { }
19
- }
20
- function project(name, setup) {
21
- return [name, setup];
22
- }
23
- const projects = [
24
- // Nothing but a react-native.config.js, with nulls
25
- project('BlankLib'),
26
- // Nothing but a windows folder
27
- project('MissingProjectFilesLib', async (folder) => {
28
- const windowsDir = path.join(folder, 'windows');
29
- await tryMkdir(windowsDir);
30
- }),
31
- // New C++ project based on the template
32
- project('SimpleCppLib', async (folder) => {
33
- const windowsDir = path.join(folder, 'windows');
34
- await tryMkdir(windowsDir);
35
- const replacements = {
36
- name: 'SimpleCppLib',
37
- namespace: 'SimpleCppLib',
38
- useMustache: true,
39
- projectGuidUpper: testProjectGuid,
40
- projectGuidLower: testProjectGuid.toLowerCase(),
41
- };
42
- await generator_common_1.copyAndReplace(path.join(templateRoot, 'cpp-lib/proj/MyLib.sln'), path.join(windowsDir, 'SimpleCppLib.sln'), replacements, null);
43
- const projDir = path.join(windowsDir, 'SimpleCppLib');
44
- await tryMkdir(projDir);
45
- await generator_common_1.copyAndReplace(path.join(templateRoot, 'cpp-lib/proj/MyLib.vcxproj'), path.join(projDir, 'SimpleCppLib.vcxproj'), replacements, null);
46
- }),
47
- // New C# project based on the template
48
- project('SimpleCSharpLib', async (folder) => {
49
- const windowsDir = path.join(folder, 'windows');
50
- await tryMkdir(windowsDir);
51
- const replacements = {
52
- name: 'SimpleCSharpLib',
53
- namespace: 'SimpleCSharpLib',
54
- useMustache: true,
55
- projectGuidUpper: testProjectGuid,
56
- projectGuidLower: testProjectGuid.toLowerCase(),
57
- };
58
- await generator_common_1.copyAndReplace(path.join(templateRoot, 'cs-lib/proj/MyLib.sln'), path.join(windowsDir, 'SimpleCSharpLib.sln'), replacements, null);
59
- const projDir = path.join(windowsDir, 'SimpleCSharpLib');
60
- await tryMkdir(projDir);
61
- await generator_common_1.copyAndReplace(path.join(templateRoot, 'cs-lib/proj/MyLib.csproj'), path.join(projDir, 'SimpleCSharpLib.csproj'), replacements, null);
62
- }),
63
- ];
64
- // Tests that given userConfig is null, the result will always be null
65
- test.each(projects)('dependencyConfig - %s (userConfig is null)', async (name, setup) => {
66
- const folder = path.resolve('src/e2etest/projects/', name);
67
- if (setup !== undefined) {
68
- await setup(folder);
69
- }
70
- const userConfig = null;
71
- const expectedConfig = null;
72
- expect(dependencyConfig_1.dependencyConfigWindows(folder, userConfig)).toBe(expectedConfig);
73
- });
74
- // Tests the result given a windows project config in react-native.config.js
75
- test.each(projects)('dependencyConfig - %s (Use react-native.config.js)', async (name, setup) => {
76
- const folder = path.resolve('src/e2etest/projects/', name);
77
- const rnc = require(path.join(folder, 'react-native.config.js'));
78
- if (setup !== undefined) {
79
- await setup(folder);
80
- }
81
- const userConfig = rnc.dependency.platforms.windows;
82
- let expectedConfig = rnc.expectedConfig;
83
- if (expectedConfig !== null) {
84
- expectedConfig.folder = folder;
85
- }
86
- expect(dependencyConfig_1.dependencyConfigWindows(folder, userConfig)).toEqual(expectedConfig);
87
- });
88
- // Tests the result of ignoring the windows project config in react-native.config.js
89
- test.each(projects)('dependencyConfig - %s (Ignore react-native.config.js)', async (name, setup) => {
90
- const folder = path.resolve('src/e2etest/projects/', name);
91
- const rnc = require(path.join(folder, 'react-native.config.js'));
92
- if (setup !== undefined) {
93
- await setup(folder);
94
- }
95
- const userConfig = {};
96
- const expectedConfig = rnc.expectedConfigIgnoringOverride;
97
- if (expectedConfig !== null) {
98
- expectedConfig.folder = folder;
99
- }
100
- expect(dependencyConfig_1.dependencyConfigWindows(folder, userConfig)).toEqual(expectedConfig);
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":"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"}
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,6 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ * @format
5
+ */
6
+ export {};
@@ -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,6 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ * @format
5
+ */
6
+ export {};
@@ -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 {};