@react-native-windows/cli 0.0.0-canary.87 → 0.0.0-canary.88
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/CHANGELOG.json +16 -1
- package/CHANGELOG.md +12 -4
- package/lib-commonjs/e2etest/autolink.test.d.ts +5 -0
- package/lib-commonjs/e2etest/autolink.test.js +37 -9
- package/lib-commonjs/e2etest/autolink.test.js.map +1 -1
- package/lib-commonjs/e2etest/runWindows.test.js +18 -0
- package/lib-commonjs/e2etest/runWindows.test.js.map +1 -1
- package/lib-commonjs/runWindows/runWindows.js +5 -3
- package/lib-commonjs/runWindows/runWindows.js.map +1 -1
- package/lib-commonjs/runWindows/runWindowsOptions.d.ts +8 -8
- package/lib-commonjs/runWindows/runWindowsOptions.js +0 -9
- package/lib-commonjs/runWindows/runWindowsOptions.js.map +1 -1
- package/lib-commonjs/runWindows/utils/autolink.d.ts +8 -5
- package/lib-commonjs/runWindows/utils/autolink.js +25 -23
- package/lib-commonjs/runWindows/utils/autolink.js.map +1 -1
- package/lib-commonjs/runWindows/utils/deploy.js +1 -1
- package/lib-commonjs/runWindows/utils/deploy.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.json
CHANGED
|
@@ -2,7 +2,22 @@
|
|
|
2
2
|
"name": "@react-native-windows/cli",
|
|
3
3
|
"entries": [
|
|
4
4
|
{
|
|
5
|
-
"date": "
|
|
5
|
+
"date": "Fri, 17 Sep 2021 05:06:17 GMT",
|
|
6
|
+
"tag": "@react-native-windows/cli_v0.0.0-canary.88",
|
|
7
|
+
"version": "0.0.0-canary.88",
|
|
8
|
+
"comments": {
|
|
9
|
+
"prerelease": [
|
|
10
|
+
{
|
|
11
|
+
"comment": "Fixed CLI options defaults",
|
|
12
|
+
"author": "jthysell@microsoft.com",
|
|
13
|
+
"commit": "5bdad2322e65162a67b8ffd85a514da733a07033",
|
|
14
|
+
"package": "@react-native-windows/cli"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"date": "Wed, 15 Sep 2021 05:07:04 GMT",
|
|
6
21
|
"tag": "@react-native-windows/cli_v0.0.0-canary.87",
|
|
7
22
|
"version": "0.0.0-canary.87",
|
|
8
23
|
"comments": {
|
package/CHANGELOG.md
CHANGED
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
# Change Log - @react-native-windows/cli
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Fri, 17 Sep 2021 05:06:17 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
-
## 0.0.0-canary.
|
|
7
|
+
## 0.0.0-canary.88
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Fri, 17 Sep 2021 05:06:17 GMT
|
|
10
10
|
|
|
11
11
|
### Changes
|
|
12
12
|
|
|
13
|
-
-
|
|
13
|
+
- Fixed CLI options defaults (jthysell@microsoft.com)
|
|
14
14
|
|
|
15
|
+
## 0.0.0-canary.87
|
|
16
|
+
|
|
17
|
+
Wed, 15 Sep 2021 05:07:04 GMT
|
|
18
|
+
|
|
19
|
+
### Changes
|
|
20
|
+
|
|
21
|
+
- Better handle spaces in project path (30809111+acoates-ms@users.noreply.github.com)
|
|
22
|
+
|
|
15
23
|
## 0.0.0-canary.86
|
|
16
24
|
|
|
17
25
|
Tue, 14 Sep 2021 05:07:02 GMT
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Microsoft Corporation.
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
* @format
|
|
6
|
+
*/
|
|
2
7
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
8
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
9
|
};
|
|
@@ -30,10 +35,16 @@ class AutolinkTest extends autolink_1.AutolinkWindows {
|
|
|
30
35
|
return this.windowsAppConfig;
|
|
31
36
|
}
|
|
32
37
|
getPackagesConfigXml() {
|
|
33
|
-
return {
|
|
38
|
+
return {
|
|
39
|
+
path: 'packages.config',
|
|
40
|
+
content: new xmldom_1.DOMParser().parseFromString(this.packagesConfig, 'application/xml'),
|
|
41
|
+
};
|
|
34
42
|
}
|
|
35
43
|
getExperimentalFeaturesPropsXml() {
|
|
36
|
-
return {
|
|
44
|
+
return {
|
|
45
|
+
path: 'ExperimentalFeatures.props',
|
|
46
|
+
content: new xmldom_1.DOMParser().parseFromString(this.experimentalFeaturesProps, 'application/xml'),
|
|
47
|
+
};
|
|
37
48
|
}
|
|
38
49
|
async updateFile(filepath, content) {
|
|
39
50
|
if (filepath === 'packages.config') {
|
|
@@ -210,7 +221,7 @@ test('ensureXAMLDialect - useWinUI3=true in react-native.config.js, useWinUI3=fa
|
|
|
210
221
|
expect(exd).toBeTruthy();
|
|
211
222
|
const expectedExperimentalFeatures = '<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"><PropertyGroup><UseWinUI3>true</UseWinUI3></PropertyGroup></Project>';
|
|
212
223
|
expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);
|
|
213
|
-
// example packages.config:
|
|
224
|
+
// example packages.config:
|
|
214
225
|
// <packages>
|
|
215
226
|
// <package id="SuperPkg" version="42"/>
|
|
216
227
|
// <package id="Microsoft.WinUI" version="3.0.0-preview3.201113.0" targetFramework="native"/>
|
|
@@ -236,7 +247,7 @@ test('ensureXAMLDialect - useWinUI3=false in react-native.config.js, useWinUI3=t
|
|
|
236
247
|
expect(exd).toBeTruthy();
|
|
237
248
|
const expectedExperimentalFeatures = '<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"><PropertyGroup><UseWinUI3>false</UseWinUI3></PropertyGroup></Project>';
|
|
238
249
|
expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);
|
|
239
|
-
// example packages.config:
|
|
250
|
+
// example packages.config:
|
|
240
251
|
// <packages>
|
|
241
252
|
// <package id="SuperPkg" version="42"/>
|
|
242
253
|
// <package id="Microsoft.WinUI" version="3.0.0-preview3.201113.0" targetFramework="native"/>
|
|
@@ -262,7 +273,7 @@ test('ensureXAMLDialect - useWinUI3 not in react-native.config.js, useWinUI3=tru
|
|
|
262
273
|
expect(exd).toBeTruthy();
|
|
263
274
|
const expectedExperimentalFeatures = '<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"><PropertyGroup><UseWinUI3>true</UseWinUI3></PropertyGroup></Project>';
|
|
264
275
|
expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);
|
|
265
|
-
// example packages.config:
|
|
276
|
+
// example packages.config:
|
|
266
277
|
// <packages>
|
|
267
278
|
// <package id="SuperPkg" version="42"/>
|
|
268
279
|
// <package id="Microsoft.WinUI" version="3.0.0-preview3.201113.0" targetFramework="native"/>
|
|
@@ -288,7 +299,7 @@ test('ensureXAMLDialect - useWinUI3 not in react-native.config.js, useWinUI3=fal
|
|
|
288
299
|
expect(exd).toBeTruthy();
|
|
289
300
|
const expectedExperimentalFeatures = '<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"><PropertyGroup><UseWinUI3>false</UseWinUI3></PropertyGroup></Project>';
|
|
290
301
|
expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);
|
|
291
|
-
// example packages.config:
|
|
302
|
+
// example packages.config:
|
|
292
303
|
// <packages>
|
|
293
304
|
// <package id="SuperPkg" version="42"/>
|
|
294
305
|
// <package id="Microsoft.WinUI" version="3.0.0-preview4.210210.4" targetFramework="native"/>
|
|
@@ -314,7 +325,7 @@ test('ensureXAMLDialect - WinUI2xVersion specified in ExperimentalFeatures.props
|
|
|
314
325
|
expect(exd).toBeTruthy();
|
|
315
326
|
const expectedExperimentalFeatures = '<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"><PropertyGroup><UseWinUI3>false</UseWinUI3><WinUI2xVersion>2.6.0-test</WinUI2xVersion></PropertyGroup></Project>';
|
|
316
327
|
expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);
|
|
317
|
-
// example packages.config:
|
|
328
|
+
// example packages.config:
|
|
318
329
|
// <packages>
|
|
319
330
|
// <package id="SuperPkg" version="42"/>
|
|
320
331
|
// <package id="Microsoft.UI.XAML" version="2.6.0-test" targetFramework="native"/>
|
|
@@ -340,7 +351,7 @@ test('ensureXAMLDialect - WinUI3Version specified in ExperimentalFeatures.props'
|
|
|
340
351
|
expect(exd).toBeTruthy();
|
|
341
352
|
const expectedExperimentalFeatures = '<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"><PropertyGroup><UseWinUI3>true</UseWinUI3><WinUI3Version>3.0.0-test</WinUI3Version></PropertyGroup></Project>';
|
|
342
353
|
expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);
|
|
343
|
-
// example packages.config:
|
|
354
|
+
// example packages.config:
|
|
344
355
|
// <packages>
|
|
345
356
|
// <package id="SuperPkg" version="42"/>
|
|
346
357
|
// <package id="Microsoft.WinUI" version="3.0.0-test" targetFramework="native"/>
|
|
@@ -370,7 +381,7 @@ test('Indirect autolink dependency', () => {
|
|
|
370
381
|
{
|
|
371
382
|
directDependency: false,
|
|
372
383
|
projectFile: 'indirect.vcxproj',
|
|
373
|
-
}
|
|
384
|
+
},
|
|
374
385
|
],
|
|
375
386
|
},
|
|
376
387
|
},
|
|
@@ -388,4 +399,21 @@ test('Indirect autolink dependency', () => {
|
|
|
388
399
|
expect(replacements.cppIncludes).toMatch(/#include <Snoopy.h>/);
|
|
389
400
|
expect(replacements.cppPackageProviders).toContain('packageProviders.Append(winrt::FamousAnimalCartoons())');
|
|
390
401
|
});
|
|
402
|
+
test('autolinkOptions - validate options', () => {
|
|
403
|
+
for (const commandOption of autolink_1.autolinkOptions) {
|
|
404
|
+
// Validate names
|
|
405
|
+
expect(commandOption.name).not.toBeNull();
|
|
406
|
+
expect(commandOption.name.startsWith('--')).toBe(true);
|
|
407
|
+
expect(commandOption.name).toBe(commandOption.name.trim());
|
|
408
|
+
// Validate defaults
|
|
409
|
+
if (!commandOption.name.endsWith(' [string]') &&
|
|
410
|
+
!commandOption.name.endsWith(' [number]')) {
|
|
411
|
+
// Commander ignores defaults for flags, so leave undefined to prevent confusion
|
|
412
|
+
expect(commandOption.default).toBeUndefined();
|
|
413
|
+
}
|
|
414
|
+
// Validate description
|
|
415
|
+
expect(commandOption.description).not.toBeNull();
|
|
416
|
+
expect(commandOption.description).toBe(commandOption.description.trim());
|
|
417
|
+
}
|
|
418
|
+
});
|
|
391
419
|
//# sourceMappingURL=autolink.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autolink.test.js","sourceRoot":"","sources":["../../src/e2etest/autolink.test.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\nimport { projectConfigWindows } from '../config/projectConfig';\nimport {AutolinkWindows} from '../runWindows/utils/autolink';\nimport {DOMParser} from 'xmldom';\nimport { ensureWinUI3Project } from './projectConfig.utils';\n\ntest('autolink with no windows project', () => {\n expect(() => {\n // eslint-disable-next-line no-new\n new AutolinkTest({}, {}, {check: true, logging: false});\n }).toThrowError();\n });\n \n test('autolink with incomplete windows project', () => {\n expect(() => {\n const autolink = new AutolinkTest(\n {windows: {}},\n {},\n {check: true, logging: false},\n );\n autolink.validateRequiredAppProperties();\n }).toThrowError();\n });\n \n class AutolinkTest extends AutolinkWindows {\n public getWindowsProjectConfig() {\n return this.windowsAppConfig;\n }\n public packagesConfig = '';\n public experimentalFeaturesProps = '';\n protected getPackagesConfigXml(){\n return {path:'packages.config', content: new DOMParser().parseFromString(this.packagesConfig, 'application/xml')};\n }\n protected getExperimentalFeaturesPropsXml(){\n return {path: 'ExperimentalFeatures.props', content: new DOMParser().parseFromString(this.experimentalFeaturesProps, 'application/xml')};\n }\n protected async updateFile(filepath: string, content: string) {\n if (filepath === 'packages.config') {\n this.packagesConfig = content;\n } else if (filepath === 'ExperimentalFeatures.props') {\n this.experimentalFeaturesProps = content;\n } else {\n throw new Error(`Unknown path: ${filepath}`);\n }\n return true;\n }\n}\n\n \n test('autolink fixup sln', () => {\n const autolink = new AutolinkTest(\n {windows: {folder: __dirname, sourceDir: '.'}},\n {},\n {check: true, logging: false, sln: 'foo'},\n );\n expect(autolink.getWindowsProjectConfig().solutionFile).toBeUndefined();\n expect(() => {\n autolink.validateRequiredAppProperties();\n }).toThrow();\n autolink.fixUpForSlnOption();\n expect(autolink.getWindowsProjectConfig().solutionFile).toEqual('foo');\n expect(() => {\n autolink.validateRequiredAppProperties();\n }).toThrow();\n });\n \n test('autolink fixup proj', async done => {\n const autolink = new AutolinkTest(\n {windows: {folder: __dirname, sourceDir: '.', solutionFile: 'foo.sln'}},\n {},\n {\n check: true,\n logging: false,\n proj: 'projects/WithWinUI3/windows/WithWinUI3/WithWinUI3.vcxproj',\n },\n );\n expect(autolink.getWindowsProjectConfig().solutionFile).toEqual('foo.sln');\n expect(autolink.getWindowsProjectConfig().project).toBeUndefined();\n \n const folder = path.resolve('src/e2etest/projects/', 'WithWinUI3');\n await ensureWinUI3Project(folder);\n expect(() => {\n autolink.validateRequiredProjectProperties();\n }).toThrow();\n autolink.fixUpForProjOption();\n \n const projectConfig = autolink.getWindowsProjectConfig().project;\n expect(projectConfig).not.toBeUndefined();\n expect(projectConfig.projectName).toEqual('WithWinUI3');\n autolink.validateRequiredProjectProperties();\n done();\n });\n \n test('empty cpp autolink dependencies', () => {\n const autolink = new AutolinkTest(\n {windows: {folder: __dirname, sourceDir: '.', solutionFile: 'foo.sln'}},\n {},\n {\n check: true,\n logging: false,\n proj: 'projects/WithWinUI3/windows/WithWinUI3/WithWinUI3.vcxproj',\n },\n );\n const replacements = autolink.getCppReplacements();\n expect(replacements.cppIncludes).toEqual('');\n expect(replacements.cppPackageProviders).toEqual(\n '\\n UNREFERENCED_PARAMETER(packageProviders);',\n );\n });\n \n test('one invalid cpp autolink dependency', () => {\n const autolink = new AutolinkTest(\n {windows: {folder: __dirname, sourceDir: '.', solutionFile: 'foo.sln'}},\n {\n superModule: {\n name: 'superModule',\n root: 'theRoot',\n platforms: {\n windows: {},\n },\n assets: [],\n hooks: {},\n params: [],\n },\n },\n {\n check: true,\n logging: false,\n proj: 'projects/WithWinUI3/windows/WithWinUI3/WithWinUI3.vcxproj',\n },\n );\n const replacements = autolink.getCppReplacements();\n expect(replacements.cppIncludes).toEqual('');\n expect(replacements.cppPackageProviders).toEqual(\n '\\n UNREFERENCED_PARAMETER(packageProviders);',\n );\n });\n \n test('one invalid cs autolink dependency', () => {\n const autolink = new AutolinkTest(\n {windows: {folder: __dirname, sourceDir: '.', solutionFile: 'foo.sln'}},\n {\n superModule: {\n name: 'superModule',\n root: 'theRoot',\n platforms: {\n windows: {},\n },\n assets: [],\n hooks: {},\n params: [],\n },\n },\n {\n check: true,\n logging: false,\n proj:\n 'projects/SimpleCSharpApp/windows/SimpleCSharpApp/SimpleCSharpApp.csproj',\n },\n );\n const replacements = autolink.getCsReplacements();\n expect(replacements.csUsingNamespaces).toEqual('');\n expect(replacements.csReactPackageProviders).toEqual('');\n });\n \n test('one valid cpp autolink dependency', () => {\n const autolink = new AutolinkTest(\n {windows: {folder: __dirname, sourceDir: '.', solutionFile: 'foo.sln'}},\n {\n superModule: {\n name: 'superModule',\n root: 'theRoot',\n platforms: {\n windows: {\n sourceDir: __dirname,\n projects: [\n {\n directDependency: true,\n projectFile: 'superModule.vcxproj',\n cppHeaders: ['Garfield.h', 'Snoopy.h'],\n cppPackageProviders: ['FamousAnimalCartoons'],\n },\n ],\n },\n },\n assets: [],\n hooks: {},\n params: [],\n },\n },\n {\n check: true,\n logging: false,\n proj: 'projects/WithWinUI3/windows/WithWinUI3/WithWinUI3.vcxproj',\n },\n );\n const replacements = autolink.getCppReplacements();\n expect(replacements.cppIncludes).toMatch(/#include <Garfield.h>/);\n expect(replacements.cppIncludes).toMatch(/#include <Snoopy.h>/);\n expect(replacements.cppPackageProviders).toContain(\n 'packageProviders.Append(winrt::FamousAnimalCartoons())',\n );\n });\n \n test('one valid cs autolink dependency', () => {\n const autolink = new AutolinkTest(\n {windows: {folder: __dirname, sourceDir: '.', solutionFile: 'foo.sln'}},\n {\n superModule: {\n name: 'superModule',\n root: 'theRoot',\n platforms: {\n windows: {\n sourceDir: __dirname,\n projects: [\n {\n directDependency: true,\n csNamespaces: ['Garfield'],\n projectFile: 'superModule.vcxproj',\n cppHeaders: ['Garfield.h', 'Snoopy.h'],\n csPackageProviders: ['FamousAnimalCartoons'],\n },\n ],\n },\n },\n assets: [],\n hooks: {},\n params: [],\n },\n },\n {\n check: true,\n logging: false,\n proj:\n 'projects/SimpleCSharpApp/windows/SimpleCSharpApp/SimpleCSharpApp.csproj',\n },\n );\n const replacements = autolink.getCsReplacements();\n expect(replacements.csUsingNamespaces).toContain('using Garfield;');\n expect(replacements.csReactPackageProviders).toContain(\n 'packageProviders.Add(new FamousAnimalCartoons())',\n );\n });\n \n test('ensureXAMLDialect - useWinUI3=true in react-native.config.js, useWinUI3=false in ExperimentalFeatures.props', async done => {\n const folder = path.resolve('src/e2etest/projects/WithWinUI3');\n const rnc = require(path.join(folder, 'react-native.config.js'));\n \n const config = projectConfigWindows(folder, rnc.project.windows)!;\n \n const al = new AutolinkTest(\n {windows: config},\n {},\n {\n check: false,\n logging: false,\n },\n );\n al.experimentalFeaturesProps = `<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>false</UseWinUI3></PropertyGroup></Project>`;\n al.packagesConfig = `<packages><package id=\"SuperPkg\" version=\"42\"/></packages>`;\n \n const exd = await al.ensureXAMLDialect();\n expect(exd).toBeTruthy();\n \n const expectedExperimentalFeatures = '<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>true</UseWinUI3></PropertyGroup></Project>';\n expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);\n\n // example packages.config: \n // <packages>\n // <package id=\"SuperPkg\" version=\"42\"/>\n // <package id=\"Microsoft.WinUI\" version=\"3.0.0-preview3.201113.0\" targetFramework=\"native\"/>\n // </packages>\n //\n expect(al.packagesConfig).toContain('Microsoft.WinUI');\n expect(al.packagesConfig).toContain('<package id=\"SuperPkg\" version=\"42\"/>');\n expect(al.packagesConfig).not.toContain('Microsoft.UI.Xaml');\n \n done();\n });\n\n test('ensureXAMLDialect - useWinUI3=false in react-native.config.js, useWinUI3=true in ExperimentalFeatures.props', async done => {\n const folder = path.resolve('src/e2etest/projects/WithWinUI3');\n const rnc = require(path.join(folder, 'react-native.config.js'));\n \n const config = projectConfigWindows(folder, rnc.project.windows)!;\n config.useWinUI3 = false;\n const al = new AutolinkTest(\n {windows: config},\n {},\n {\n check: false,\n logging: false,\n },\n );\n al.experimentalFeaturesProps = `<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>true</UseWinUI3></PropertyGroup></Project>`;\n al.packagesConfig = `<packages><package id=\"SuperPkg\" version=\"42\"/></packages>`;\n \n const exd = await al.ensureXAMLDialect();\n expect(exd).toBeTruthy();\n \n const expectedExperimentalFeatures = '<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>false</UseWinUI3></PropertyGroup></Project>';\n expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);\n\n // example packages.config: \n // <packages>\n // <package id=\"SuperPkg\" version=\"42\"/>\n // <package id=\"Microsoft.WinUI\" version=\"3.0.0-preview3.201113.0\" targetFramework=\"native\"/>\n // </packages>\n //\n expect(al.packagesConfig).not.toContain('Microsoft.WinUI');\n expect(al.packagesConfig).toContain('<package id=\"SuperPkg\" version=\"42\"/>');\n expect(al.packagesConfig).toContain('Microsoft.UI.Xaml');\n \n done();\n });\n\n test('ensureXAMLDialect - useWinUI3 not in react-native.config.js, useWinUI3=true in ExperimentalFeatures.props', async done => {\n const folder = path.resolve('src/e2etest/projects/WithWinUI3');\n const rnc = require(path.join(folder, 'react-native.config.js'));\n \n const config = projectConfigWindows(folder, rnc.project.windows)!;\n delete config.useWinUI3;\n const al = new AutolinkTest(\n {windows: config},\n {},\n {\n check: false,\n logging: false,\n },\n );\n al.experimentalFeaturesProps = `<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>true</UseWinUI3></PropertyGroup></Project>`;\n al.packagesConfig = `<packages><package id=\"SuperPkg\" version=\"42\"/></packages>`;\n \n const exd = await al.ensureXAMLDialect();\n expect(exd).toBeTruthy();\n \n const expectedExperimentalFeatures = '<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>true</UseWinUI3></PropertyGroup></Project>';\n expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);\n\n // example packages.config: \n // <packages>\n // <package id=\"SuperPkg\" version=\"42\"/>\n // <package id=\"Microsoft.WinUI\" version=\"3.0.0-preview3.201113.0\" targetFramework=\"native\"/>\n // </packages>\n //\n expect(al.packagesConfig).toContain('Microsoft.WinUI');\n expect(al.packagesConfig).toContain('<package id=\"SuperPkg\" version=\"42\"/>');\n expect(al.packagesConfig).not.toContain('Microsoft.UI.Xaml');\n \n done();\n });\n \n test('ensureXAMLDialect - useWinUI3 not in react-native.config.js, useWinUI3=false in ExperimentalFeatures.props', async done => {\n const folder = path.resolve('src/e2etest/projects/WithWinUI3');\n const rnc = require(path.join(folder, 'react-native.config.js'));\n \n const config = projectConfigWindows(folder, rnc.project.windows)!;\n delete config.useWinUI3;\n const al = new AutolinkTest(\n {windows: config},\n {},\n {\n check: false,\n logging: false,\n },\n );\n al.experimentalFeaturesProps = `<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>false</UseWinUI3></PropertyGroup></Project>`;\n al.packagesConfig = `<packages><package id=\"SuperPkg\" version=\"42\"/><package id=\"Microsoft.WinUI\"/></packages>`;\n \n const exd = await al.ensureXAMLDialect();\n expect(exd).toBeTruthy();\n \n const expectedExperimentalFeatures = '<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>false</UseWinUI3></PropertyGroup></Project>';\n expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);\n\n // example packages.config: \n // <packages>\n // <package id=\"SuperPkg\" version=\"42\"/>\n // <package id=\"Microsoft.WinUI\" version=\"3.0.0-preview4.210210.4\" targetFramework=\"native\"/>\n // </packages>\n //\n expect(al.packagesConfig).not.toContain('Microsoft.WinUI');\n expect(al.packagesConfig).toContain('<package id=\"SuperPkg\" version=\"42\"/>');\n expect(al.packagesConfig).toContain('Microsoft.UI.Xaml');\n \n done();\n });\n\n test('ensureXAMLDialect - WinUI2xVersion specified in ExperimentalFeatures.props', async done => {\n const folder = path.resolve('src/e2etest/projects/WithWinUI3');\n const rnc = require(path.join(folder, 'react-native.config.js'));\n \n const config = projectConfigWindows(folder, rnc.project.windows)!;\n delete config.useWinUI3;\n const al = new AutolinkTest(\n {windows: config},\n {},\n {\n check: false,\n logging: false,\n },\n );\n al.experimentalFeaturesProps = `<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>false</UseWinUI3><WinUI2xVersion>2.6.0-test</WinUI2xVersion></PropertyGroup></Project>`;\n al.packagesConfig = `<packages><package id=\"SuperPkg\" version=\"42\"/></packages>`;\n \n const exd = await al.ensureXAMLDialect();\n expect(exd).toBeTruthy();\n \n const expectedExperimentalFeatures = '<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>false</UseWinUI3><WinUI2xVersion>2.6.0-test</WinUI2xVersion></PropertyGroup></Project>';\n expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);\n\n // example packages.config: \n // <packages>\n // <package id=\"SuperPkg\" version=\"42\"/>\n // <package id=\"Microsoft.UI.XAML\" version=\"2.6.0-test\" targetFramework=\"native\"/>\n // </packages>\n //\n expect(al.packagesConfig).toContain('Microsoft.UI.Xaml');\n expect(al.packagesConfig).toContain('2.6.0-test');\n expect(al.packagesConfig).toContain('<package id=\"SuperPkg\" version=\"42\"/>');\n expect(al.packagesConfig).not.toContain('Microsoft.WinUI');\n \n done();\n });\n\n test('ensureXAMLDialect - WinUI3Version specified in ExperimentalFeatures.props', async done => {\n const folder = path.resolve('src/e2etest/projects/WithWinUI3');\n const rnc = require(path.join(folder, 'react-native.config.js'));\n \n const config = projectConfigWindows(folder, rnc.project.windows)!;\n\n const al = new AutolinkTest(\n {windows: config},\n {},\n {\n check: false,\n logging: false,\n },\n );\n al.experimentalFeaturesProps = `<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>true</UseWinUI3><WinUI3Version>3.0.0-test</WinUI3Version></PropertyGroup></Project>`;\n al.packagesConfig = `<packages><package id=\"SuperPkg\" version=\"42\"/></packages>`;\n \n const exd = await al.ensureXAMLDialect();\n expect(exd).toBeTruthy();\n \n const expectedExperimentalFeatures = '<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>true</UseWinUI3><WinUI3Version>3.0.0-test</WinUI3Version></PropertyGroup></Project>';\n expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);\n\n // example packages.config: \n // <packages>\n // <package id=\"SuperPkg\" version=\"42\"/>\n // <package id=\"Microsoft.WinUI\" version=\"3.0.0-test\" targetFramework=\"native\"/>\n // </packages>\n //\n \n expect(al.packagesConfig).toContain('Microsoft.WinUI');\n expect(al.packagesConfig).toContain('3.0.0-test');\n expect(al.packagesConfig).toContain('<package id=\"SuperPkg\" version=\"42\"/>');\n expect(al.packagesConfig).not.toContain('Microsoft.UI.Xaml');\n \n done();\n });\n \n test('Indirect autolink dependency', () => {\n const autolink = new AutolinkTest(\n {windows: {folder: __dirname, sourceDir: '.', solutionFile: 'foo.sln'}},\n {\n superModule: {\n name: 'superModule',\n root: 'theRoot',\n platforms: {\n windows: {\n sourceDir: __dirname,\n projects: [\n {\n directDependency: true,\n projectFile: 'superModule.vcxproj',\n cppHeaders: ['Garfield.h', 'Snoopy.h'],\n cppPackageProviders: ['FamousAnimalCartoons'],\n },\n {\n directDependency: false,\n projectFile: 'indirect.vcxproj',\n }\n ],\n },\n },\n assets: [],\n hooks: {},\n params: [],\n },\n },\n {\n check: true,\n logging: false,\n proj: 'projects/WithIndirectDependency/windows/WithIndirectDependency/WithIndirectDependency.vcxproj',\n },\n );\n const replacements = autolink.getCppReplacements();\n expect(replacements.cppIncludes).toMatch(/#include <Garfield.h>/);\n expect(replacements.cppIncludes).toMatch(/#include <Snoopy.h>/);\n expect(replacements.cppPackageProviders).toContain(\n 'packageProviders.Append(winrt::FamousAnimalCartoons())',\n );\n });\n"]}
|
|
1
|
+
{"version":3,"file":"autolink.test.js","sourceRoot":"","sources":["../../src/e2etest/autolink.test.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';\nimport {projectConfigWindows} from '../config/projectConfig';\nimport {AutolinkWindows, autolinkOptions} from '../runWindows/utils/autolink';\nimport {DOMParser} from 'xmldom';\nimport {ensureWinUI3Project} from './projectConfig.utils';\n\ntest('autolink with no windows project', () => {\n expect(() => {\n // eslint-disable-next-line no-new\n new AutolinkTest({}, {}, {check: true, logging: false});\n }).toThrowError();\n});\n\ntest('autolink with incomplete windows project', () => {\n expect(() => {\n const autolink = new AutolinkTest(\n {windows: {}},\n {},\n {check: true, logging: false},\n );\n autolink.validateRequiredAppProperties();\n }).toThrowError();\n});\n\nclass AutolinkTest extends AutolinkWindows {\n public getWindowsProjectConfig() {\n return this.windowsAppConfig;\n }\n public packagesConfig = '';\n public experimentalFeaturesProps = '';\n protected getPackagesConfigXml() {\n return {\n path: 'packages.config',\n content: new DOMParser().parseFromString(\n this.packagesConfig,\n 'application/xml',\n ),\n };\n }\n protected getExperimentalFeaturesPropsXml() {\n return {\n path: 'ExperimentalFeatures.props',\n content: new DOMParser().parseFromString(\n this.experimentalFeaturesProps,\n 'application/xml',\n ),\n };\n }\n protected async updateFile(filepath: string, content: string) {\n if (filepath === 'packages.config') {\n this.packagesConfig = content;\n } else if (filepath === 'ExperimentalFeatures.props') {\n this.experimentalFeaturesProps = content;\n } else {\n throw new Error(`Unknown path: ${filepath}`);\n }\n return true;\n }\n}\n\ntest('autolink fixup sln', () => {\n const autolink = new AutolinkTest(\n {windows: {folder: __dirname, sourceDir: '.'}},\n {},\n {check: true, logging: false, sln: 'foo'},\n );\n expect(autolink.getWindowsProjectConfig().solutionFile).toBeUndefined();\n expect(() => {\n autolink.validateRequiredAppProperties();\n }).toThrow();\n autolink.fixUpForSlnOption();\n expect(autolink.getWindowsProjectConfig().solutionFile).toEqual('foo');\n expect(() => {\n autolink.validateRequiredAppProperties();\n }).toThrow();\n});\n\ntest('autolink fixup proj', async done => {\n const autolink = new AutolinkTest(\n {windows: {folder: __dirname, sourceDir: '.', solutionFile: 'foo.sln'}},\n {},\n {\n check: true,\n logging: false,\n proj: 'projects/WithWinUI3/windows/WithWinUI3/WithWinUI3.vcxproj',\n },\n );\n expect(autolink.getWindowsProjectConfig().solutionFile).toEqual('foo.sln');\n expect(autolink.getWindowsProjectConfig().project).toBeUndefined();\n\n const folder = path.resolve('src/e2etest/projects/', 'WithWinUI3');\n await ensureWinUI3Project(folder);\n expect(() => {\n autolink.validateRequiredProjectProperties();\n }).toThrow();\n autolink.fixUpForProjOption();\n\n const projectConfig = autolink.getWindowsProjectConfig().project;\n expect(projectConfig).not.toBeUndefined();\n expect(projectConfig.projectName).toEqual('WithWinUI3');\n autolink.validateRequiredProjectProperties();\n done();\n});\n\ntest('empty cpp autolink dependencies', () => {\n const autolink = new AutolinkTest(\n {windows: {folder: __dirname, sourceDir: '.', solutionFile: 'foo.sln'}},\n {},\n {\n check: true,\n logging: false,\n proj: 'projects/WithWinUI3/windows/WithWinUI3/WithWinUI3.vcxproj',\n },\n );\n const replacements = autolink.getCppReplacements();\n expect(replacements.cppIncludes).toEqual('');\n expect(replacements.cppPackageProviders).toEqual(\n '\\n UNREFERENCED_PARAMETER(packageProviders);',\n );\n});\n\ntest('one invalid cpp autolink dependency', () => {\n const autolink = new AutolinkTest(\n {windows: {folder: __dirname, sourceDir: '.', solutionFile: 'foo.sln'}},\n {\n superModule: {\n name: 'superModule',\n root: 'theRoot',\n platforms: {\n windows: {},\n },\n assets: [],\n hooks: {},\n params: [],\n },\n },\n {\n check: true,\n logging: false,\n proj: 'projects/WithWinUI3/windows/WithWinUI3/WithWinUI3.vcxproj',\n },\n );\n const replacements = autolink.getCppReplacements();\n expect(replacements.cppIncludes).toEqual('');\n expect(replacements.cppPackageProviders).toEqual(\n '\\n UNREFERENCED_PARAMETER(packageProviders);',\n );\n});\n\ntest('one invalid cs autolink dependency', () => {\n const autolink = new AutolinkTest(\n {windows: {folder: __dirname, sourceDir: '.', solutionFile: 'foo.sln'}},\n {\n superModule: {\n name: 'superModule',\n root: 'theRoot',\n platforms: {\n windows: {},\n },\n assets: [],\n hooks: {},\n params: [],\n },\n },\n {\n check: true,\n logging: false,\n proj:\n 'projects/SimpleCSharpApp/windows/SimpleCSharpApp/SimpleCSharpApp.csproj',\n },\n );\n const replacements = autolink.getCsReplacements();\n expect(replacements.csUsingNamespaces).toEqual('');\n expect(replacements.csReactPackageProviders).toEqual('');\n});\n\ntest('one valid cpp autolink dependency', () => {\n const autolink = new AutolinkTest(\n {windows: {folder: __dirname, sourceDir: '.', solutionFile: 'foo.sln'}},\n {\n superModule: {\n name: 'superModule',\n root: 'theRoot',\n platforms: {\n windows: {\n sourceDir: __dirname,\n projects: [\n {\n directDependency: true,\n projectFile: 'superModule.vcxproj',\n cppHeaders: ['Garfield.h', 'Snoopy.h'],\n cppPackageProviders: ['FamousAnimalCartoons'],\n },\n ],\n },\n },\n assets: [],\n hooks: {},\n params: [],\n },\n },\n {\n check: true,\n logging: false,\n proj: 'projects/WithWinUI3/windows/WithWinUI3/WithWinUI3.vcxproj',\n },\n );\n const replacements = autolink.getCppReplacements();\n expect(replacements.cppIncludes).toMatch(/#include <Garfield.h>/);\n expect(replacements.cppIncludes).toMatch(/#include <Snoopy.h>/);\n expect(replacements.cppPackageProviders).toContain(\n 'packageProviders.Append(winrt::FamousAnimalCartoons())',\n );\n});\n\ntest('one valid cs autolink dependency', () => {\n const autolink = new AutolinkTest(\n {windows: {folder: __dirname, sourceDir: '.', solutionFile: 'foo.sln'}},\n {\n superModule: {\n name: 'superModule',\n root: 'theRoot',\n platforms: {\n windows: {\n sourceDir: __dirname,\n projects: [\n {\n directDependency: true,\n csNamespaces: ['Garfield'],\n projectFile: 'superModule.vcxproj',\n cppHeaders: ['Garfield.h', 'Snoopy.h'],\n csPackageProviders: ['FamousAnimalCartoons'],\n },\n ],\n },\n },\n assets: [],\n hooks: {},\n params: [],\n },\n },\n {\n check: true,\n logging: false,\n proj:\n 'projects/SimpleCSharpApp/windows/SimpleCSharpApp/SimpleCSharpApp.csproj',\n },\n );\n const replacements = autolink.getCsReplacements();\n expect(replacements.csUsingNamespaces).toContain('using Garfield;');\n expect(replacements.csReactPackageProviders).toContain(\n 'packageProviders.Add(new FamousAnimalCartoons())',\n );\n});\n\ntest('ensureXAMLDialect - useWinUI3=true in react-native.config.js, useWinUI3=false in ExperimentalFeatures.props', async done => {\n const folder = path.resolve('src/e2etest/projects/WithWinUI3');\n const rnc = require(path.join(folder, 'react-native.config.js'));\n\n const config = projectConfigWindows(folder, rnc.project.windows)!;\n\n const al = new AutolinkTest(\n {windows: config},\n {},\n {\n check: false,\n logging: false,\n },\n );\n al.experimentalFeaturesProps = `<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>false</UseWinUI3></PropertyGroup></Project>`;\n al.packagesConfig = `<packages><package id=\"SuperPkg\" version=\"42\"/></packages>`;\n\n const exd = await al.ensureXAMLDialect();\n expect(exd).toBeTruthy();\n\n const expectedExperimentalFeatures =\n '<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>true</UseWinUI3></PropertyGroup></Project>';\n expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);\n\n // example packages.config:\n // <packages>\n // <package id=\"SuperPkg\" version=\"42\"/>\n // <package id=\"Microsoft.WinUI\" version=\"3.0.0-preview3.201113.0\" targetFramework=\"native\"/>\n // </packages>\n //\n expect(al.packagesConfig).toContain('Microsoft.WinUI');\n expect(al.packagesConfig).toContain('<package id=\"SuperPkg\" version=\"42\"/>');\n expect(al.packagesConfig).not.toContain('Microsoft.UI.Xaml');\n\n done();\n});\n\ntest('ensureXAMLDialect - useWinUI3=false in react-native.config.js, useWinUI3=true in ExperimentalFeatures.props', async done => {\n const folder = path.resolve('src/e2etest/projects/WithWinUI3');\n const rnc = require(path.join(folder, 'react-native.config.js'));\n\n const config = projectConfigWindows(folder, rnc.project.windows)!;\n config.useWinUI3 = false;\n const al = new AutolinkTest(\n {windows: config},\n {},\n {\n check: false,\n logging: false,\n },\n );\n al.experimentalFeaturesProps = `<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>true</UseWinUI3></PropertyGroup></Project>`;\n al.packagesConfig = `<packages><package id=\"SuperPkg\" version=\"42\"/></packages>`;\n\n const exd = await al.ensureXAMLDialect();\n expect(exd).toBeTruthy();\n\n const expectedExperimentalFeatures =\n '<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>false</UseWinUI3></PropertyGroup></Project>';\n expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);\n\n // example packages.config:\n // <packages>\n // <package id=\"SuperPkg\" version=\"42\"/>\n // <package id=\"Microsoft.WinUI\" version=\"3.0.0-preview3.201113.0\" targetFramework=\"native\"/>\n // </packages>\n //\n expect(al.packagesConfig).not.toContain('Microsoft.WinUI');\n expect(al.packagesConfig).toContain('<package id=\"SuperPkg\" version=\"42\"/>');\n expect(al.packagesConfig).toContain('Microsoft.UI.Xaml');\n\n done();\n});\n\ntest('ensureXAMLDialect - useWinUI3 not in react-native.config.js, useWinUI3=true in ExperimentalFeatures.props', async done => {\n const folder = path.resolve('src/e2etest/projects/WithWinUI3');\n const rnc = require(path.join(folder, 'react-native.config.js'));\n\n const config = projectConfigWindows(folder, rnc.project.windows)!;\n delete config.useWinUI3;\n const al = new AutolinkTest(\n {windows: config},\n {},\n {\n check: false,\n logging: false,\n },\n );\n al.experimentalFeaturesProps = `<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>true</UseWinUI3></PropertyGroup></Project>`;\n al.packagesConfig = `<packages><package id=\"SuperPkg\" version=\"42\"/></packages>`;\n\n const exd = await al.ensureXAMLDialect();\n expect(exd).toBeTruthy();\n\n const expectedExperimentalFeatures =\n '<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>true</UseWinUI3></PropertyGroup></Project>';\n expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);\n\n // example packages.config:\n // <packages>\n // <package id=\"SuperPkg\" version=\"42\"/>\n // <package id=\"Microsoft.WinUI\" version=\"3.0.0-preview3.201113.0\" targetFramework=\"native\"/>\n // </packages>\n //\n expect(al.packagesConfig).toContain('Microsoft.WinUI');\n expect(al.packagesConfig).toContain('<package id=\"SuperPkg\" version=\"42\"/>');\n expect(al.packagesConfig).not.toContain('Microsoft.UI.Xaml');\n\n done();\n});\n\ntest('ensureXAMLDialect - useWinUI3 not in react-native.config.js, useWinUI3=false in ExperimentalFeatures.props', async done => {\n const folder = path.resolve('src/e2etest/projects/WithWinUI3');\n const rnc = require(path.join(folder, 'react-native.config.js'));\n\n const config = projectConfigWindows(folder, rnc.project.windows)!;\n delete config.useWinUI3;\n const al = new AutolinkTest(\n {windows: config},\n {},\n {\n check: false,\n logging: false,\n },\n );\n al.experimentalFeaturesProps = `<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>false</UseWinUI3></PropertyGroup></Project>`;\n al.packagesConfig = `<packages><package id=\"SuperPkg\" version=\"42\"/><package id=\"Microsoft.WinUI\"/></packages>`;\n\n const exd = await al.ensureXAMLDialect();\n expect(exd).toBeTruthy();\n\n const expectedExperimentalFeatures =\n '<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>false</UseWinUI3></PropertyGroup></Project>';\n expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);\n\n // example packages.config:\n // <packages>\n // <package id=\"SuperPkg\" version=\"42\"/>\n // <package id=\"Microsoft.WinUI\" version=\"3.0.0-preview4.210210.4\" targetFramework=\"native\"/>\n // </packages>\n //\n expect(al.packagesConfig).not.toContain('Microsoft.WinUI');\n expect(al.packagesConfig).toContain('<package id=\"SuperPkg\" version=\"42\"/>');\n expect(al.packagesConfig).toContain('Microsoft.UI.Xaml');\n\n done();\n});\n\ntest('ensureXAMLDialect - WinUI2xVersion specified in ExperimentalFeatures.props', async done => {\n const folder = path.resolve('src/e2etest/projects/WithWinUI3');\n const rnc = require(path.join(folder, 'react-native.config.js'));\n\n const config = projectConfigWindows(folder, rnc.project.windows)!;\n delete config.useWinUI3;\n const al = new AutolinkTest(\n {windows: config},\n {},\n {\n check: false,\n logging: false,\n },\n );\n al.experimentalFeaturesProps = `<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>false</UseWinUI3><WinUI2xVersion>2.6.0-test</WinUI2xVersion></PropertyGroup></Project>`;\n al.packagesConfig = `<packages><package id=\"SuperPkg\" version=\"42\"/></packages>`;\n\n const exd = await al.ensureXAMLDialect();\n expect(exd).toBeTruthy();\n\n const expectedExperimentalFeatures =\n '<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>false</UseWinUI3><WinUI2xVersion>2.6.0-test</WinUI2xVersion></PropertyGroup></Project>';\n expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);\n\n // example packages.config:\n // <packages>\n // <package id=\"SuperPkg\" version=\"42\"/>\n // <package id=\"Microsoft.UI.XAML\" version=\"2.6.0-test\" targetFramework=\"native\"/>\n // </packages>\n //\n expect(al.packagesConfig).toContain('Microsoft.UI.Xaml');\n expect(al.packagesConfig).toContain('2.6.0-test');\n expect(al.packagesConfig).toContain('<package id=\"SuperPkg\" version=\"42\"/>');\n expect(al.packagesConfig).not.toContain('Microsoft.WinUI');\n\n done();\n});\n\ntest('ensureXAMLDialect - WinUI3Version specified in ExperimentalFeatures.props', async done => {\n const folder = path.resolve('src/e2etest/projects/WithWinUI3');\n const rnc = require(path.join(folder, 'react-native.config.js'));\n\n const config = projectConfigWindows(folder, rnc.project.windows)!;\n\n const al = new AutolinkTest(\n {windows: config},\n {},\n {\n check: false,\n logging: false,\n },\n );\n al.experimentalFeaturesProps = `<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>true</UseWinUI3><WinUI3Version>3.0.0-test</WinUI3Version></PropertyGroup></Project>`;\n al.packagesConfig = `<packages><package id=\"SuperPkg\" version=\"42\"/></packages>`;\n\n const exd = await al.ensureXAMLDialect();\n expect(exd).toBeTruthy();\n\n const expectedExperimentalFeatures =\n '<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"><PropertyGroup><UseWinUI3>true</UseWinUI3><WinUI3Version>3.0.0-test</WinUI3Version></PropertyGroup></Project>';\n expect(al.experimentalFeaturesProps).toEqual(expectedExperimentalFeatures);\n\n // example packages.config:\n // <packages>\n // <package id=\"SuperPkg\" version=\"42\"/>\n // <package id=\"Microsoft.WinUI\" version=\"3.0.0-test\" targetFramework=\"native\"/>\n // </packages>\n //\n\n expect(al.packagesConfig).toContain('Microsoft.WinUI');\n expect(al.packagesConfig).toContain('3.0.0-test');\n expect(al.packagesConfig).toContain('<package id=\"SuperPkg\" version=\"42\"/>');\n expect(al.packagesConfig).not.toContain('Microsoft.UI.Xaml');\n\n done();\n});\n\ntest('Indirect autolink dependency', () => {\n const autolink = new AutolinkTest(\n {windows: {folder: __dirname, sourceDir: '.', solutionFile: 'foo.sln'}},\n {\n superModule: {\n name: 'superModule',\n root: 'theRoot',\n platforms: {\n windows: {\n sourceDir: __dirname,\n projects: [\n {\n directDependency: true,\n projectFile: 'superModule.vcxproj',\n cppHeaders: ['Garfield.h', 'Snoopy.h'],\n cppPackageProviders: ['FamousAnimalCartoons'],\n },\n {\n directDependency: false,\n projectFile: 'indirect.vcxproj',\n },\n ],\n },\n },\n assets: [],\n hooks: {},\n params: [],\n },\n },\n {\n check: true,\n logging: false,\n proj:\n 'projects/WithIndirectDependency/windows/WithIndirectDependency/WithIndirectDependency.vcxproj',\n },\n );\n const replacements = autolink.getCppReplacements();\n expect(replacements.cppIncludes).toMatch(/#include <Garfield.h>/);\n expect(replacements.cppIncludes).toMatch(/#include <Snoopy.h>/);\n expect(replacements.cppPackageProviders).toContain(\n 'packageProviders.Append(winrt::FamousAnimalCartoons())',\n );\n});\n\ntest('autolinkOptions - validate options', () => {\n for (const commandOption of autolinkOptions) {\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});\n"]}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
const runWindows_1 = require("../runWindows/runWindows");
|
|
9
|
+
const runWindowsOptions_1 = require("../runWindows/runWindowsOptions");
|
|
9
10
|
test('getAnonymizedProjectName - Project Exists', async () => {
|
|
10
11
|
const fooName = await runWindows_1.getAnonymizedProjectName(`${__dirname}/projects/FooPackage`);
|
|
11
12
|
const barName = await runWindows_1.getAnonymizedProjectName(`${__dirname}/projects/BarPackage`);
|
|
@@ -19,4 +20,21 @@ test('getAnonymizedProjectName - Project Doesnt Exist', async () => {
|
|
|
19
20
|
const emptyPackageName = await runWindows_1.getAnonymizedProjectName(`${__dirname}/projects/BlankApp`);
|
|
20
21
|
expect(emptyPackageName).toBeNull();
|
|
21
22
|
});
|
|
23
|
+
test('runWindowsOptions - validate options', () => {
|
|
24
|
+
for (const commandOption of runWindowsOptions_1.runWindowsOptions) {
|
|
25
|
+
// Validate names
|
|
26
|
+
expect(commandOption.name).not.toBeNull();
|
|
27
|
+
expect(commandOption.name.startsWith('--')).toBe(true);
|
|
28
|
+
expect(commandOption.name).toBe(commandOption.name.trim());
|
|
29
|
+
// Validate defaults
|
|
30
|
+
if (!commandOption.name.endsWith(' [string]') &&
|
|
31
|
+
!commandOption.name.endsWith(' [number]')) {
|
|
32
|
+
// Commander ignores defaults for flags, so leave undefined to prevent confusion
|
|
33
|
+
expect(commandOption.default).toBeUndefined();
|
|
34
|
+
}
|
|
35
|
+
// Validate description
|
|
36
|
+
expect(commandOption.description).not.toBeNull();
|
|
37
|
+
expect(commandOption.description).toBe(commandOption.description.trim());
|
|
38
|
+
}
|
|
39
|
+
});
|
|
22
40
|
//# sourceMappingURL=runWindows.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runWindows.test.js","sourceRoot":"","sources":["../../src/e2etest/runWindows.test.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAEH,yDAAkE;AAElE,IAAI,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;IAC3D,MAAM,OAAO,GAAG,MAAM,qCAAwB,CAC5C,GAAG,SAAS,sBAAsB,CACnC,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,qCAAwB,CAC5C,GAAG,SAAS,sBAAsB,CACnC,CAAC;IAEF,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEtC,MAAM,CAAC,OAAQ,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,OAAQ,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAE3C,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;IACjE,MAAM,gBAAgB,GAAG,MAAM,qCAAwB,CACrD,GAAG,SAAS,oBAAoB,CACjC,CAAC;IACF,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtC,CAAC,CAAC,CAAC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n * @format\n */\n\nimport {getAnonymizedProjectName} from '../runWindows/runWindows';\n\ntest('getAnonymizedProjectName - Project Exists', async () => {\n const fooName = await getAnonymizedProjectName(\n `${__dirname}/projects/FooPackage`,\n );\n const barName = await getAnonymizedProjectName(\n `${__dirname}/projects/BarPackage`,\n );\n\n expect(typeof fooName).toBe('string');\n expect(typeof barName).toBe('string');\n\n expect(fooName!.length).toBeGreaterThan(0);\n expect(barName!.length).toBeGreaterThan(0);\n\n expect(fooName).not.toBe(barName);\n});\n\ntest('getAnonymizedProjectName - Project Doesnt Exist', async () => {\n const emptyPackageName = await getAnonymizedProjectName(\n `${__dirname}/projects/BlankApp`,\n );\n expect(emptyPackageName).toBeNull();\n});\n"]}
|
|
1
|
+
{"version":3,"file":"runWindows.test.js","sourceRoot":"","sources":["../../src/e2etest/runWindows.test.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAEH,yDAAkE;AAClE,uEAAkE;AAElE,IAAI,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;IAC3D,MAAM,OAAO,GAAG,MAAM,qCAAwB,CAC5C,GAAG,SAAS,sBAAsB,CACnC,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,qCAAwB,CAC5C,GAAG,SAAS,sBAAsB,CACnC,CAAC;IAEF,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEtC,MAAM,CAAC,OAAQ,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,OAAQ,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAE3C,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;IACjE,MAAM,gBAAgB,GAAG,MAAM,qCAAwB,CACrD,GAAG,SAAS,oBAAoB,CACjC,CAAC;IACF,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;IAChD,KAAK,MAAM,aAAa,IAAI,qCAAiB,EAAE;QAC7C,iBAAiB;QACjB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC1C,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3D,oBAAoB;QACpB,IACE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YACzC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EACzC;YACA,gFAAgF;YAChF,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC;SAC/C;QAED,uBAAuB;QACvB,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjD,MAAM,CAAC,aAAa,CAAC,WAAY,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,WAAY,CAAC,IAAI,EAAE,CAAC,CAAC;KAC5E;AACH,CAAC,CAAC,CAAC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n * @format\n */\n\nimport {getAnonymizedProjectName} from '../runWindows/runWindows';\nimport {runWindowsOptions} from '../runWindows/runWindowsOptions';\n\ntest('getAnonymizedProjectName - Project Exists', async () => {\n const fooName = await getAnonymizedProjectName(\n `${__dirname}/projects/FooPackage`,\n );\n const barName = await getAnonymizedProjectName(\n `${__dirname}/projects/BarPackage`,\n );\n\n expect(typeof fooName).toBe('string');\n expect(typeof barName).toBe('string');\n\n expect(fooName!.length).toBeGreaterThan(0);\n expect(barName!.length).toBeGreaterThan(0);\n\n expect(fooName).not.toBe(barName);\n});\n\ntest('getAnonymizedProjectName - Project Doesnt Exist', async () => {\n const emptyPackageName = await getAnonymizedProjectName(\n `${__dirname}/projects/BlankApp`,\n );\n expect(emptyPackageName).toBeNull();\n});\n\ntest('runWindowsOptions - validate options', () => {\n for (const commandOption of runWindowsOptions) {\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});\n"]}
|
|
@@ -42,7 +42,7 @@ const runWindowsOptions_1 = require("./runWindowsOptions");
|
|
|
42
42
|
const autolink_1 = require("./utils/autolink");
|
|
43
43
|
const os_1 = require("os");
|
|
44
44
|
function setExitProcessWithError(error, loggingWasEnabled) {
|
|
45
|
-
if (
|
|
45
|
+
if (loggingWasEnabled !== true) {
|
|
46
46
|
console.log(`Re-run the command with ${chalk_1.default.bold('--logging')} for more information`);
|
|
47
47
|
if (telemetry_1.Telemetry.client) {
|
|
48
48
|
console.log(`Your session id was ${telemetry_1.Telemetry.client.commonProperties.sessionId}`);
|
|
@@ -189,7 +189,7 @@ async function getAnonymizedProjectName(projectRoot) {
|
|
|
189
189
|
}
|
|
190
190
|
exports.getAnonymizedProjectName = getAnonymizedProjectName;
|
|
191
191
|
async function runWindowsInternal(args, config, options) {
|
|
192
|
-
const verbose = options.logging;
|
|
192
|
+
const verbose = options.logging === true;
|
|
193
193
|
if (verbose) {
|
|
194
194
|
commandWithProgress_1.newInfo('Verbose: ON');
|
|
195
195
|
}
|
|
@@ -293,7 +293,9 @@ async function runWindowsInternal(args, config, options) {
|
|
|
293
293
|
}
|
|
294
294
|
}
|
|
295
295
|
function shouldLaunchPackager(options) {
|
|
296
|
-
return options.packager
|
|
296
|
+
return (options.packager === true &&
|
|
297
|
+
options.launch === true &&
|
|
298
|
+
options.release !== true);
|
|
297
299
|
}
|
|
298
300
|
/*
|
|
299
301
|
// Example of running the Windows Command
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runWindows.js","sourceRoot":"","sources":["../../src/runWindows/runWindows.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,oDAA4B;AAC5B,4CAAoB;AACpB,gDAAwB;AACxB,+DAOyC;AAEzC,qDAAuC;AACvC,kDAA0B;AAC1B,uDAAyC;AACzC,qEAAuE;AACvE,mDAAqC;AACrC,wEAAgD;AAGhD,2DAAyE;AAEzE,+CAAiD;AACjD,2BAAkC;AAElC,SAAS,uBAAuB,CAC9B,KAAY,EACZ,iBAA0B;IAE1B,IAAI,CAAC,iBAAiB,EAAE;QACtB,OAAO,CAAC,GAAG,CACT,2BAA2B,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAC1E,CAAC;QACF,IAAI,qBAAS,CAAC,MAAM,EAAE;YACpB,OAAO,CAAC,GAAG,CACT,uBAAuB,qBAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CACrE,CAAC;SACH;KACF;IACD,IAAI,KAAK,YAAY,sBAAU,EAAE;QAC/B,OAAO,CAAC,QAAQ,GAAG,uBAAW,CAAC,KAAK,CAAC,IAAsB,CAAC,CAAC;KAC9D;SAAM;QACL,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;KACtB;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,IAAI;QACF,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,eAAe,EAAE;YAC7D,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC;SAClC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpE,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;YAC7D,OAAO,OAAO,CAAC,OAAO,CAAC;SACxB;KACF;IAAC,WAAM,GAAE;IACV,6BAAO,CAAC,uBAAuB,OAAO,UAAU,CAAC,CAAC;IAClD,OAAO,EAAE,CAAC;AACZ,CAAC;AAYD,IAAI,eAAe,GAAoB,MAAM,CAAC;AAC9C;;;;;GAKG;AACH,KAAK,UAAU,UAAU,CACvB,IAAc,EACd,MAAc,EACd,OAA0B;;IAE1B,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;QACtB,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;SACpC;QACD,qBAAS,CAAC,OAAO,EAAE,CAAC;KACrB;SAAM;QACL,qBAAS,CAAC,KAAK,EAAE,CAAC;KACnB;IAED,qHAAqH;IACrH,iHAAiH;IACjH,iHAAiH;IACjH,qGAAqG;IACrG,6GAA6G;IAC7G,2DAA2D;IAC3D,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACpC,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAErC,MAAM,qBAAqB,GACzB,OAAO,CAAC,GAAG,CAAC,YAAY;QACxB,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,+CAA+C;IAE7H,IAAI,OAAO,CAAC,IAAI,EAAE;QAChB,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,sBAAY,CAAC,0BAA0B,EAAE,CAAC;YACvD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;YACvD,OAAO;SACR;QAAC,OAAO,CAAC,EAAE;YACV,qBAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC5B,8BAAQ,CAAC,qCAAqC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/D,OAAO,uBAAuB,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;SACpD;KACF;IAED,IAAI,eAAe,CAAC;IACpB,IAAI;QACF,MAAM,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KACjD;IAAC,OAAO,CAAC,EAAE;QACV,qBAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAC5B,eAAe,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,qBAAqB,EAAE;YAC1B,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CACpC,mCAAmC,EACnC;gBACE,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC;aAClC,CACF,CAAC;YACF,MAAM,mBAAmB,GAAG,cAAI,CAAC,IAAI,CACnC,cAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAC5B,8BAA8B,CAC/B,CAAC;YAEF,8BAAQ,CACN,sIAAsI,mBAAmB,0FAA0F,CACpP,CAAC;SACH;QACD,OAAO,uBAAuB,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;KACpD;YAAS;QACR,MAAA,qBAAS,CAAC,MAAM,0CAAE,UAAU,CAAC;YAC3B,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE;gBACV,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,OAAO,CAAC,MAAM;gBACrB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,GAAG,EAAE,OAAO,CAAC,GAAG,KAAK,SAAS;gBAC9B,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS;gBAChC,YAAY,EACV,OAAO,CAAC,YAAY,KAAK,SAAS;oBAChC,CAAC,CAAC,OAAO,CAAC,YAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM;oBACzC,CAAC,CAAC,CAAC;gBACP,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,sBAAsB,EAAE,aAAa,CAAC,sBAAsB,CAAC;gBAC7D,cAAc,EAAE,aAAa,CAAC,cAAc,CAAC;gBAC7C,aAAa,EAAE,aAAa,CAAC,2BAA2B,CAAC;gBACzD,YAAY,EAAE,0BAAc,EAAE;gBAC9B,cAAc,EAAE,OAAO,CAAC,MAAM,EAAE;gBAChC,OAAO,EAAE,eAAe,KAAK,SAAS;gBACtC,KAAK,EAAE,eAAe;gBACtB,QAAQ,EAAE,aAAQ,EAAE;gBACpB,QAAQ,EAAE,4BAAgB,CAAC,SAAS,CAAC;gBACrC,IAAI,EAAE,SAAI,EAAE,CAAC,MAAM;gBACnB,OAAO,EAAE,MAAM,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC;gBACpD,qBAAqB,EAAE,qBAAqB;aAC7C;SACF,EAAE;QACH,MAAA,qBAAS,CAAC,MAAM,0CAAE,KAAK,GAAG;KAC3B;AACH,CAAC;AAEM,KAAK,UAAU,wBAAwB,CAC5C,WAAmB;IAEnB,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC/D,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;QACnC,OAAO,IAAI,CAAC;KACb;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,CAAC,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CACzD,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;IACrC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;QACnC,OAAO,IAAI,CAAC;KACb;IAED,4EAA4E;IAC5E,OAAO,gBAAM;SACV,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,WAAW,CAAC;SACnB,MAAM,CAAC,KAAK,CAAC;SACb,QAAQ,EAAE,CAAC;AAChB,CAAC;AAvBD,4DAuBC;AAED,KAAK,UAAU,kBAAkB,CAC/B,IAAc,EACd,MAAc,EACd,OAA0B;IAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,IAAI,OAAO,EAAE;QACX,6BAAO,CAAC,aAAa,CAAC,CAAC;KACxB;IAED,wBAAwB;IACxB,IAAI,OAAO,CAAC;IACZ,IAAI;QACF,OAAO,GAAG,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACrD;IAAC,OAAO,CAAC,EAAE;QACV,8BAAQ,CAAC,0CAA0C,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAChE,MAAM,CAAC,CAAC;KACT;IAED,IAAI;QACF,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,MAAM,YAAY,GAAa,EAAE,CAAC;YAClC,MAAM,cAAc,GAAG,MAAM,CAAC;YAC9B,MAAM,eAAe,GAAG;gBACtB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,GAAG,EAAE,OAAO,CAAC,GAAG;aACjB,CAAC;YACF,eAAe,GAAG,UAAU,CAAC;YAC7B,MAAM,0BAAe,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;SAC3E;aAAM;YACL,6BAAO,CAAC,0BAA0B,CAAC,CAAC;SACrC;KACF;IAAC,OAAO,CAAC,EAAE;QACV,8BAAQ,CAAC,uBAAuB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,CAAC;KACT;IAED,IAAI,UAAwB,CAAC;IAC7B,eAAe,GAAG,gBAAgB,CAAC;IACnC,IAAI;QACF,UAAU,GAAG,sBAAY,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACvE;IAAC,OAAO,KAAK,EAAE;QACd,6BAAO,CAAC,4BAA4B,CAAC,CAAC;QACtC,iBAAiB;QACjB,IAAI;YACF,6BAAO,CAAC,uBAAuB,CAAC,CAAC;YACjC,UAAU,GAAG,sBAAY,CAAC,oBAAoB,CAC5C,OAAO,CAAC,IAAI,EACZ,OAAO,EACP,IAAI,CACL,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACV,8BAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACpB,MAAM,KAAK,CAAC;SACb;KACF;IAED,IAAI,OAAO,CAAC,KAAK,EAAE;QACjB,eAAe,GAAG,cAAc,CAAC;QACjC,IAAI,CAAC,OAAO,EAAE;YACZ,8BAAQ,CACN,yFAAyF,CAC1F,CAAC;YACF,MAAM,IAAI,sBAAU,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;SACjE;QAED,2BAA2B;QAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAEtD,kDAAkD;QAClD,YAAY,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAExC,IAAI;YACF,eAAe,GAAG,cAAc,CAAC;YACjC,MAAM,KAAK,CAAC,aAAa,CACvB,UAAU,EACV,OAAQ,EACR,SAAS,EACT,OAAO,CAAC,IAAI,EACZ,YAAY,EACZ,OAAO,EACP,OAAO,EACP,OAAO,CAAC,iBAAiB,EACzB,OAAO,CAAC,UAAU,CACnB,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACV,8BAAQ,CACN,6BAA6B,CAAC,CAAC,OAAO,mCAAmC,CAC1E,CAAC;YACF,IAAI,CAAC,CAAC,OAAO,EAAE;gBACb,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,eAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;aAC3C;YACD,MAAM,CAAC,CAAC;SACT;KACF;SAAM;QACL,6BAAO,CAAC,uBAAuB,CAAC,CAAC;KAClC;IAED,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE;QACjC,MAAM,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KACvD;IAED,IAAI,OAAO,CAAC,MAAM,EAAE;QAClB,eAAe,GAAG,cAAc,CAAC;QACjC,IAAI,CAAC,OAAO,EAAE;YACZ,8BAAQ,CACN,yFAAyF,CAC1F,CAAC;YACF,MAAM,IAAI,sBAAU,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;SACjE;QAED,IAAI;YACF,eAAe,GAAG,QAAQ,CAAC;YAC3B,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;gBACxD,MAAM,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;aAC/C;iBAAM;gBACL,MAAM,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;aACpE;SACF;QAAC,OAAO,CAAC,EAAE;YACV,8BAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzD,MAAM,CAAC,CAAC;SACT;KACF;SAAM;QACL,6BAAO,CAAC,wBAAwB,CAAC,CAAC;KACnC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,OAA0B;IACtD,OAAO,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;AACxE,CAAC;AAED;;;;;;;;EAQE;AAEF;;GAEG;AACU,QAAA,iBAAiB,GAAY;IACxC,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,kFAAkF;IACpF,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,qCAAiB;CAC3B,CAAC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport crypto from 'crypto';\nimport fs from 'fs';\nimport path from 'path';\nimport {\n Telemetry,\n isMSFTInternal,\n getDiskFreeSpace,\n CodedError,\n CodedErrorType,\n CodedErrors,\n} from '@react-native-windows/telemetry';\n\nimport * as build from './utils/build';\nimport chalk from 'chalk';\nimport * as deploy from './utils/deploy';\nimport {newError, newInfo, newWarn} from './utils/commandWithProgress';\nimport * as info from './utils/info';\nimport MSBuildTools from './utils/msbuildtools';\n\nimport {Command, Config} from '@react-native-community/cli-types';\nimport {runWindowsOptions, RunWindowsOptions} from './runWindowsOptions';\n\nimport {autoLinkCommand} from './utils/autolink';\nimport {totalmem, cpus} from 'os';\n\nfunction setExitProcessWithError(\n error: Error,\n loggingWasEnabled: boolean,\n): void {\n if (!loggingWasEnabled) {\n console.log(\n `Re-run the command with ${chalk.bold('--logging')} for more information`,\n );\n if (Telemetry.client) {\n console.log(\n `Your session id was ${Telemetry.client.commonProperties.sessionId}`,\n );\n }\n }\n if (error instanceof CodedError) {\n process.exitCode = CodedErrors[error.name as CodedErrorType];\n } else {\n process.exitCode = 1;\n }\n}\n\nfunction getPkgVersion(pkgName: string): string {\n try {\n const pkgJsonPath = require.resolve(`${pkgName}/package.json`, {\n paths: [process.cwd(), __dirname],\n });\n const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath).toString());\n if (pkgJson.name === pkgName && pkgJson.version !== undefined) {\n return pkgJson.version;\n }\n } catch {}\n newWarn(`Could not determine ${pkgName} version`);\n return '';\n}\n\n/**\n * Labels used by telemtry to represent current operation\n */\ntype RunWindowsPhase =\n | 'None'\n | 'AutoLink'\n | 'FindBuildTools'\n | 'FindSolution'\n | 'Deploy';\n\nlet runWindowsPhase: RunWindowsPhase = 'None';\n/**\n * Performs build deploy and launch of RNW apps.\n * @param args Unprocessed args passed from react-native CLI.\n * @param config Config passed from react-native CLI.\n * @param options Options passed from react-native CLI.\n */\nasync function runWindows(\n args: string[],\n config: Config,\n options: RunWindowsOptions,\n) {\n if (!options.telemetry) {\n if (options.logging) {\n console.log('Disabling telemetry');\n }\n Telemetry.disable();\n } else {\n Telemetry.setup();\n }\n\n // https://github.com/yarnpkg/yarn/issues/8334 - Yarn on Windows breaks apps that read from the environment variables\n // Yarn will run node via CreateProcess and pass npm_config_* variables in lowercase without unifying their value\n // with their possibly existing uppercase counterparts. This breaks programs that read from the environment block\n // and write to a case-insensitive dictionary since they expect to encounter each variable only once.\n // The values of the lowercase variables are the one npm actually wants to use, plus they are seeded from the\n // uppercase variable values one if there are no overrides.\n delete process.env.NPM_CONFIG_CACHE;\n delete process.env.NPM_CONFIG_PREFIX;\n\n const hasRunRnwDependencies =\n process.env.LocalAppData &&\n fs.existsSync(path.join(process.env.LocalAppData, 'rnw-dependencies.txt')); // CODESYNC \\vnext\\scripts\\rnw-dependencies.ps1\n\n if (options.info) {\n try {\n const output = await info.getEnvironmentInfo();\n console.log(output.trimEnd());\n console.log(' Installed UWP SDKs:');\n const sdks = MSBuildTools.getAllAvailableUAPVersions();\n sdks.forEach(version => console.log(' ' + version));\n return;\n } catch (e) {\n Telemetry.trackException(e);\n newError('Unable to print environment info.\\n' + e.toString());\n return setExitProcessWithError(e, options.logging);\n }\n }\n\n let runWindowsError;\n try {\n await runWindowsInternal(args, config, options);\n } catch (e) {\n Telemetry.trackException(e);\n runWindowsError = e;\n if (!hasRunRnwDependencies) {\n const rnwPkgJsonPath = require.resolve(\n 'react-native-windows/package.json',\n {\n paths: [process.cwd(), __dirname],\n },\n );\n const rnwDependenciesPath = path.join(\n path.dirname(rnwPkgJsonPath),\n 'scripts/rnw-dependencies.ps1',\n );\n\n newError(\n `It is possible your installation is missing required software dependencies. Dependencies can be automatically installed by running ${rnwDependenciesPath} from an elevated PowerShell prompt.\\nFor more information, go to http://aka.ms/rnw-deps`,\n );\n }\n return setExitProcessWithError(e, options.logging);\n } finally {\n Telemetry.client?.trackEvent({\n name: 'run-windows',\n properties: {\n release: options.release,\n arch: options.arch,\n singleproc: options.singleproc,\n emulator: options.emulator,\n device: options.device,\n target: options.target,\n remoteDebugging: options.remoteDebugging,\n logging: options.logging,\n packager: options.packager,\n bundle: options.bundle,\n launch: options.launch,\n autolink: options.autolink,\n build: options.bundle,\n deploy: options.deploy,\n sln: options.sln !== undefined,\n proj: options.proj !== undefined,\n msBuildProps:\n options.msbuildprops !== undefined\n ? options.msbuildprops!.split(',').length\n : 0,\n info: options.info,\n directDebugging: options.directDebugging,\n 'react-native-windows': getPkgVersion('react-native-windows'),\n 'react-native': getPkgVersion('react-native'),\n 'cli-version': getPkgVersion('@react-native-windows/cli'),\n msftInternal: isMSFTInternal(),\n durationInSecs: process.uptime(),\n success: runWindowsError === undefined,\n phase: runWindowsPhase,\n totalMem: totalmem(),\n diskFree: getDiskFreeSpace(__dirname),\n cpus: cpus().length,\n project: await getAnonymizedProjectName(config.root),\n hasRunRnwDependencies: hasRunRnwDependencies,\n },\n });\n Telemetry.client?.flush();\n }\n}\n\nexport async function getAnonymizedProjectName(\n projectRoot: string,\n): Promise<string | null> {\n const projectJsonPath = path.join(projectRoot, 'package.json');\n if (!fs.existsSync(projectJsonPath)) {\n return null;\n }\n\n const projectJson = JSON.parse(\n (await fs.promises.readFile(projectJsonPath)).toString(),\n );\n\n const projectName = projectJson.name;\n if (typeof projectName !== 'string') {\n return null;\n }\n\n // Ensure the project name cannot be reverse engineered to avoid leaking PII\n return crypto\n .createHash('sha256')\n .update(projectName)\n .digest('hex')\n .toString();\n}\n\nasync function runWindowsInternal(\n args: string[],\n config: Config,\n options: RunWindowsOptions,\n) {\n const verbose = options.logging;\n\n if (verbose) {\n newInfo('Verbose: ON');\n }\n\n // Get the solution file\n let slnFile;\n try {\n slnFile = build.getAppSolutionFile(options, config);\n } catch (e) {\n newError(`Couldn't get app solution information. ${e.message}`);\n throw e;\n }\n\n try {\n if (options.autolink) {\n const autolinkArgs: string[] = [];\n const autolinkConfig = config;\n const autoLinkOptions = {\n logging: options.logging,\n proj: options.proj,\n sln: options.sln,\n };\n runWindowsPhase = 'AutoLink';\n await autoLinkCommand.func(autolinkArgs, autolinkConfig, autoLinkOptions);\n } else {\n newInfo('Autolink step is skipped');\n }\n } catch (e) {\n newError(`Autolinking failed. ${e.message}`);\n throw e;\n }\n\n let buildTools: MSBuildTools;\n runWindowsPhase = 'FindBuildTools';\n try {\n buildTools = MSBuildTools.findAvailableVersion(options.arch, verbose);\n } catch (error) {\n newWarn('No public VS release found');\n // Try prerelease\n try {\n newInfo('Trying pre-release VS');\n buildTools = MSBuildTools.findAvailableVersion(\n options.arch,\n verbose,\n true, // preRelease\n );\n } catch (e) {\n newError(e.message);\n throw error;\n }\n }\n\n if (options.build) {\n runWindowsPhase = 'FindSolution';\n if (!slnFile) {\n newError(\n 'Visual Studio Solution file not found. Maybe run \"npx react-native-windows-init\" first?',\n );\n throw new CodedError('NoSolution', 'Cannot find solution file');\n }\n\n // Get build/deploy options\n const buildType = deploy.getBuildConfiguration(options);\n const msBuildProps = build.parseMsBuildProps(options);\n\n // Disable the autolink check since we just ran it\n msBuildProps.RunAutolinkCheck = 'false';\n\n try {\n runWindowsPhase = 'FindSolution';\n await build.buildSolution(\n buildTools,\n slnFile!,\n buildType,\n options.arch,\n msBuildProps,\n verbose,\n 'build',\n options.buildLogDirectory,\n options.singleproc,\n );\n } catch (e) {\n newError(\n `Build failed with message ${e.message}. Check your build configuration.`,\n );\n if (e.logfile) {\n console.log('See', chalk.bold(e.logfile));\n }\n throw e;\n }\n } else {\n newInfo('Build step is skipped');\n }\n\n if (shouldLaunchPackager(options)) {\n await deploy.startServerInNewWindow(options, verbose);\n }\n\n if (options.deploy) {\n runWindowsPhase = 'FindSolution';\n if (!slnFile) {\n newError(\n 'Visual Studio Solution file not found. Maybe run \"npx react-native-windows-init\" first?',\n );\n throw new CodedError('NoSolution', 'Cannot find solution file');\n }\n\n try {\n runWindowsPhase = 'Deploy';\n if (options.device || options.emulator || options.target) {\n await deploy.deployToDevice(options, verbose);\n } else {\n await deploy.deployToDesktop(options, verbose, config, buildTools);\n }\n } catch (e) {\n newError(`Failed to deploy${e ? `: ${e.message}` : ''}`);\n throw e;\n }\n } else {\n newInfo('Deploy step is skipped');\n }\n}\n\nfunction shouldLaunchPackager(options: RunWindowsOptions): boolean {\n return options.packager && options.launch && options.release !== true;\n}\n\n/*\n// Example of running the Windows Command\nrunWindows({\n root: 'C:\\\\github\\\\hack\\\\myapp',\n debug: true,\n arch: 'x86',\n nugetPath: 'C:\\\\github\\\\react\\\\react-native-windows\\\\local-cli\\\\runWindows\\\\.nuget\\\\nuget.exe'\n});\n*/\n\n/**\n * Starts the app on a connected Windows emulator or mobile device.\n */\nexport const runWindowsCommand: Command = {\n name: 'run-windows',\n description:\n 'builds your app and starts it on a connected Windows desktop, emulator or device',\n func: runWindows,\n options: runWindowsOptions,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"runWindows.js","sourceRoot":"","sources":["../../src/runWindows/runWindows.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport crypto from 'crypto';\nimport fs from 'fs';\nimport path from 'path';\nimport {\n Telemetry,\n isMSFTInternal,\n getDiskFreeSpace,\n CodedError,\n CodedErrorType,\n CodedErrors,\n} from '@react-native-windows/telemetry';\n\nimport * as build from './utils/build';\nimport chalk from 'chalk';\nimport * as deploy from './utils/deploy';\nimport {newError, newInfo, newWarn} from './utils/commandWithProgress';\nimport * as info from './utils/info';\nimport MSBuildTools from './utils/msbuildtools';\n\nimport {Command, Config} from '@react-native-community/cli-types';\nimport {runWindowsOptions, RunWindowsOptions} from './runWindowsOptions';\n\nimport {autoLinkCommand} from './utils/autolink';\nimport {totalmem, cpus} from 'os';\n\nfunction setExitProcessWithError(\n error: Error,\n loggingWasEnabled?: boolean,\n): void {\n if (loggingWasEnabled !== true) {\n console.log(\n `Re-run the command with ${chalk.bold('--logging')} for more information`,\n );\n if (Telemetry.client) {\n console.log(\n `Your session id was ${Telemetry.client.commonProperties.sessionId}`,\n );\n }\n }\n if (error instanceof CodedError) {\n process.exitCode = CodedErrors[error.name as CodedErrorType];\n } else {\n process.exitCode = 1;\n }\n}\n\nfunction getPkgVersion(pkgName: string): string {\n try {\n const pkgJsonPath = require.resolve(`${pkgName}/package.json`, {\n paths: [process.cwd(), __dirname],\n });\n const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath).toString());\n if (pkgJson.name === pkgName && pkgJson.version !== undefined) {\n return pkgJson.version;\n }\n } catch {}\n newWarn(`Could not determine ${pkgName} version`);\n return '';\n}\n\n/**\n * Labels used by telemtry to represent current operation\n */\ntype RunWindowsPhase =\n | 'None'\n | 'AutoLink'\n | 'FindBuildTools'\n | 'FindSolution'\n | 'Deploy';\n\nlet runWindowsPhase: RunWindowsPhase = 'None';\n/**\n * Performs build deploy and launch of RNW apps.\n * @param args Unprocessed args passed from react-native CLI.\n * @param config Config passed from react-native CLI.\n * @param options Options passed from react-native CLI.\n */\nasync function runWindows(\n args: string[],\n config: Config,\n options: RunWindowsOptions,\n) {\n if (!options.telemetry) {\n if (options.logging) {\n console.log('Disabling telemetry');\n }\n Telemetry.disable();\n } else {\n Telemetry.setup();\n }\n\n // https://github.com/yarnpkg/yarn/issues/8334 - Yarn on Windows breaks apps that read from the environment variables\n // Yarn will run node via CreateProcess and pass npm_config_* variables in lowercase without unifying their value\n // with their possibly existing uppercase counterparts. This breaks programs that read from the environment block\n // and write to a case-insensitive dictionary since they expect to encounter each variable only once.\n // The values of the lowercase variables are the one npm actually wants to use, plus they are seeded from the\n // uppercase variable values one if there are no overrides.\n delete process.env.NPM_CONFIG_CACHE;\n delete process.env.NPM_CONFIG_PREFIX;\n\n const hasRunRnwDependencies =\n process.env.LocalAppData &&\n fs.existsSync(path.join(process.env.LocalAppData, 'rnw-dependencies.txt')); // CODESYNC \\vnext\\scripts\\rnw-dependencies.ps1\n\n if (options.info) {\n try {\n const output = await info.getEnvironmentInfo();\n console.log(output.trimEnd());\n console.log(' Installed UWP SDKs:');\n const sdks = MSBuildTools.getAllAvailableUAPVersions();\n sdks.forEach(version => console.log(' ' + version));\n return;\n } catch (e) {\n Telemetry.trackException(e);\n newError('Unable to print environment info.\\n' + e.toString());\n return setExitProcessWithError(e, options.logging);\n }\n }\n\n let runWindowsError;\n try {\n await runWindowsInternal(args, config, options);\n } catch (e) {\n Telemetry.trackException(e);\n runWindowsError = e;\n if (!hasRunRnwDependencies) {\n const rnwPkgJsonPath = require.resolve(\n 'react-native-windows/package.json',\n {\n paths: [process.cwd(), __dirname],\n },\n );\n const rnwDependenciesPath = path.join(\n path.dirname(rnwPkgJsonPath),\n 'scripts/rnw-dependencies.ps1',\n );\n\n newError(\n `It is possible your installation is missing required software dependencies. Dependencies can be automatically installed by running ${rnwDependenciesPath} from an elevated PowerShell prompt.\\nFor more information, go to http://aka.ms/rnw-deps`,\n );\n }\n return setExitProcessWithError(e, options.logging);\n } finally {\n Telemetry.client?.trackEvent({\n name: 'run-windows',\n properties: {\n release: options.release,\n arch: options.arch,\n singleproc: options.singleproc,\n emulator: options.emulator,\n device: options.device,\n target: options.target,\n remoteDebugging: options.remoteDebugging,\n logging: options.logging,\n packager: options.packager,\n bundle: options.bundle,\n launch: options.launch,\n autolink: options.autolink,\n build: options.bundle,\n deploy: options.deploy,\n sln: options.sln !== undefined,\n proj: options.proj !== undefined,\n msBuildProps:\n options.msbuildprops !== undefined\n ? options.msbuildprops!.split(',').length\n : 0,\n info: options.info,\n directDebugging: options.directDebugging,\n 'react-native-windows': getPkgVersion('react-native-windows'),\n 'react-native': getPkgVersion('react-native'),\n 'cli-version': getPkgVersion('@react-native-windows/cli'),\n msftInternal: isMSFTInternal(),\n durationInSecs: process.uptime(),\n success: runWindowsError === undefined,\n phase: runWindowsPhase,\n totalMem: totalmem(),\n diskFree: getDiskFreeSpace(__dirname),\n cpus: cpus().length,\n project: await getAnonymizedProjectName(config.root),\n hasRunRnwDependencies: hasRunRnwDependencies,\n },\n });\n Telemetry.client?.flush();\n }\n}\n\nexport async function getAnonymizedProjectName(\n projectRoot: string,\n): Promise<string | null> {\n const projectJsonPath = path.join(projectRoot, 'package.json');\n if (!fs.existsSync(projectJsonPath)) {\n return null;\n }\n\n const projectJson = JSON.parse(\n (await fs.promises.readFile(projectJsonPath)).toString(),\n );\n\n const projectName = projectJson.name;\n if (typeof projectName !== 'string') {\n return null;\n }\n\n // Ensure the project name cannot be reverse engineered to avoid leaking PII\n return crypto\n .createHash('sha256')\n .update(projectName)\n .digest('hex')\n .toString();\n}\n\nasync function runWindowsInternal(\n args: string[],\n config: Config,\n options: RunWindowsOptions,\n) {\n const verbose = options.logging === true;\n\n if (verbose) {\n newInfo('Verbose: ON');\n }\n\n // Get the solution file\n let slnFile;\n try {\n slnFile = build.getAppSolutionFile(options, config);\n } catch (e) {\n newError(`Couldn't get app solution information. ${e.message}`);\n throw e;\n }\n\n try {\n if (options.autolink) {\n const autolinkArgs: string[] = [];\n const autolinkConfig = config;\n const autoLinkOptions = {\n logging: options.logging,\n proj: options.proj,\n sln: options.sln,\n };\n runWindowsPhase = 'AutoLink';\n await autoLinkCommand.func(autolinkArgs, autolinkConfig, autoLinkOptions);\n } else {\n newInfo('Autolink step is skipped');\n }\n } catch (e) {\n newError(`Autolinking failed. ${e.message}`);\n throw e;\n }\n\n let buildTools: MSBuildTools;\n runWindowsPhase = 'FindBuildTools';\n try {\n buildTools = MSBuildTools.findAvailableVersion(options.arch, verbose);\n } catch (error) {\n newWarn('No public VS release found');\n // Try prerelease\n try {\n newInfo('Trying pre-release VS');\n buildTools = MSBuildTools.findAvailableVersion(\n options.arch,\n verbose,\n true, // preRelease\n );\n } catch (e) {\n newError(e.message);\n throw error;\n }\n }\n\n if (options.build) {\n runWindowsPhase = 'FindSolution';\n if (!slnFile) {\n newError(\n 'Visual Studio Solution file not found. Maybe run \"npx react-native-windows-init\" first?',\n );\n throw new CodedError('NoSolution', 'Cannot find solution file');\n }\n\n // Get build/deploy options\n const buildType = deploy.getBuildConfiguration(options);\n const msBuildProps = build.parseMsBuildProps(options);\n\n // Disable the autolink check since we just ran it\n msBuildProps.RunAutolinkCheck = 'false';\n\n try {\n runWindowsPhase = 'FindSolution';\n await build.buildSolution(\n buildTools,\n slnFile!,\n buildType,\n options.arch,\n msBuildProps,\n verbose,\n 'build',\n options.buildLogDirectory,\n options.singleproc,\n );\n } catch (e) {\n newError(\n `Build failed with message ${e.message}. Check your build configuration.`,\n );\n if (e.logfile) {\n console.log('See', chalk.bold(e.logfile));\n }\n throw e;\n }\n } else {\n newInfo('Build step is skipped');\n }\n\n if (shouldLaunchPackager(options)) {\n await deploy.startServerInNewWindow(options, verbose);\n }\n\n if (options.deploy) {\n runWindowsPhase = 'FindSolution';\n if (!slnFile) {\n newError(\n 'Visual Studio Solution file not found. Maybe run \"npx react-native-windows-init\" first?',\n );\n throw new CodedError('NoSolution', 'Cannot find solution file');\n }\n\n try {\n runWindowsPhase = 'Deploy';\n if (options.device || options.emulator || options.target) {\n await deploy.deployToDevice(options, verbose);\n } else {\n await deploy.deployToDesktop(options, verbose, config, buildTools);\n }\n } catch (e) {\n newError(`Failed to deploy${e ? `: ${e.message}` : ''}`);\n throw e;\n }\n } else {\n newInfo('Deploy step is skipped');\n }\n}\n\nfunction shouldLaunchPackager(options: RunWindowsOptions): boolean {\n return (\n options.packager === true &&\n options.launch === true &&\n options.release !== true\n );\n}\n\n/*\n// Example of running the Windows Command\nrunWindows({\n root: 'C:\\\\github\\\\hack\\\\myapp',\n debug: true,\n arch: 'x86',\n nugetPath: 'C:\\\\github\\\\react\\\\react-native-windows\\\\local-cli\\\\runWindows\\\\.nuget\\\\nuget.exe'\n});\n*/\n\n/**\n * Starts the app on a connected Windows emulator or mobile device.\n */\nexport const runWindowsCommand: Command = {\n name: 'run-windows',\n description:\n 'builds your app and starts it on a connected Windows desktop, emulator or device',\n func: runWindows,\n options: runWindowsOptions,\n};\n"]}
|
|
@@ -37,19 +37,19 @@ export interface RunWindowsOptions {
|
|
|
37
37
|
device?: boolean;
|
|
38
38
|
target?: string;
|
|
39
39
|
remoteDebugging?: string;
|
|
40
|
-
logging
|
|
41
|
-
packager
|
|
42
|
-
bundle
|
|
43
|
-
launch
|
|
44
|
-
autolink
|
|
45
|
-
build
|
|
46
|
-
deploy
|
|
40
|
+
logging?: boolean;
|
|
41
|
+
packager?: boolean;
|
|
42
|
+
bundle?: boolean;
|
|
43
|
+
launch?: boolean;
|
|
44
|
+
autolink?: boolean;
|
|
45
|
+
build?: boolean;
|
|
46
|
+
deploy?: boolean;
|
|
47
47
|
deployFromLayout?: boolean;
|
|
48
48
|
sln?: string;
|
|
49
49
|
proj?: string;
|
|
50
50
|
msbuildprops?: string;
|
|
51
51
|
buildLogDirectory?: string;
|
|
52
|
-
info
|
|
52
|
+
info?: boolean;
|
|
53
53
|
directDebugging?: number;
|
|
54
54
|
telemetry?: boolean;
|
|
55
55
|
}
|
|
@@ -45,7 +45,6 @@ exports.runWindowsOptions = [
|
|
|
45
45
|
{
|
|
46
46
|
name: '--logging',
|
|
47
47
|
description: 'Enables logging',
|
|
48
|
-
default: false,
|
|
49
48
|
},
|
|
50
49
|
{
|
|
51
50
|
name: '--no-packager',
|
|
@@ -54,32 +53,26 @@ exports.runWindowsOptions = [
|
|
|
54
53
|
{
|
|
55
54
|
name: '--bundle',
|
|
56
55
|
description: 'Enable Bundle configuration and it would be ReleaseBundle/DebugBundle other than Release/Debug',
|
|
57
|
-
default: false,
|
|
58
56
|
},
|
|
59
57
|
{
|
|
60
58
|
name: '--no-launch',
|
|
61
59
|
description: 'Do not launch the app after deployment',
|
|
62
|
-
default: false,
|
|
63
60
|
},
|
|
64
61
|
{
|
|
65
62
|
name: '--no-autolink',
|
|
66
63
|
description: 'Do not run autolinking',
|
|
67
|
-
default: false,
|
|
68
64
|
},
|
|
69
65
|
{
|
|
70
66
|
name: '--no-build',
|
|
71
67
|
description: 'Do not build the solution',
|
|
72
|
-
default: false,
|
|
73
68
|
},
|
|
74
69
|
{
|
|
75
70
|
name: '--no-deploy',
|
|
76
71
|
description: 'Do not deploy the app',
|
|
77
|
-
default: false,
|
|
78
72
|
},
|
|
79
73
|
{
|
|
80
74
|
name: '--deploy-from-layout',
|
|
81
75
|
description: 'Force deploy from layout, even in release builds',
|
|
82
|
-
default: false,
|
|
83
76
|
},
|
|
84
77
|
{
|
|
85
78
|
name: '--sln [string]',
|
|
@@ -102,7 +95,6 @@ exports.runWindowsOptions = [
|
|
|
102
95
|
{
|
|
103
96
|
name: '--info',
|
|
104
97
|
description: 'Dump environment information',
|
|
105
|
-
default: false,
|
|
106
98
|
},
|
|
107
99
|
{
|
|
108
100
|
name: '--direct-debugging [number]',
|
|
@@ -112,7 +104,6 @@ exports.runWindowsOptions = [
|
|
|
112
104
|
{
|
|
113
105
|
name: '--no-telemetry',
|
|
114
106
|
description: 'Disables sending telemetry that allows analysis of usage and failures of the react-native-windows CLI',
|
|
115
|
-
default: true,
|
|
116
107
|
},
|
|
117
108
|
];
|
|
118
109
|
function parseBuildArch(arg) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runWindowsOptions.js","sourceRoot":"","sources":["../../src/runWindows/runWindowsOptions.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAuDU,QAAA,iBAAiB,GAAoB;IAChD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,2BAA2B;KACzC;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,sFAAsF;QACxF,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI;KAC/B;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,0CAA0C;QACvD,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,cAAc;KACtB;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,2BAA2B;KACzC;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,gCAAgC;KAC9C;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,uCAAuC;KACrD;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,qDAAqD;KACnE;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,2CAA2C;KACzD;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"runWindowsOptions.js","sourceRoot":"","sources":["../../src/runWindows/runWindowsOptions.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport {CommandOption} from '@react-native-community/cli-types';\n\nexport type BuildArch = 'x86' | 'x64' | 'ARM64';\nexport type BuildConfig = 'Debug' | 'DebugBundle' | 'Release' | 'ReleaseBundle';\n\n/**\n * * Options are the following:\n * release: Boolean - Specifies release build\n * root: String - The root of the application\n * arch: String - The build architecture (ARM64, x86, x64)\n * singleproc: Boolean - opt out of multi-proc builds\n * emulator: Boolean - Deploy to the emulator\n * device: Boolean - Deploy to a device\n * target: String - Device GUID to deploy to\n * remote-debugging: Boolean - Run using remote JS proxy\n * logging: Boolean - Enables logging\n * no-packager: Boolean - Do not launch packager while building\n * bundle: Boolean - Enable Bundle configuration.\n * no-launch: Boolean - Do not launch the app after deployment\n * no-build: Boolean - Do not build the solution\n * no-deploy: Boolean - Do not deploy the app\n * deploy-from-layout: Force deploy from layout, even in release builds\n * sln: String - Solution file to build\n * msbuildprops: String - Comma separated props to pass to msbuild, eg: prop1=value1,prop2=value2\n * direct-debugging: Number - Enable direct debugging on specified port\n * no-telemetry: Boolean - Disables sending telemetry that allows analysis of usage and failures of the react-native-windows CLI\n */\nexport interface RunWindowsOptions {\n release?: boolean;\n root: string;\n arch: BuildArch;\n singleproc?: boolean;\n emulator?: boolean;\n device?: boolean;\n target?: string;\n remoteDebugging?: string;\n logging?: boolean;\n packager?: boolean;\n bundle?: boolean;\n launch?: boolean;\n autolink?: boolean;\n build?: boolean;\n deploy?: boolean;\n deployFromLayout?: boolean;\n sln?: string;\n proj?: string;\n msbuildprops?: string;\n buildLogDirectory?: string;\n info?: boolean;\n directDebugging?: number;\n telemetry?: boolean;\n}\n\nexport const runWindowsOptions: CommandOption[] = [\n {\n name: '--release',\n description: 'Specifies a release build',\n },\n {\n name: '--root [string]',\n description:\n 'Override the root directory for the windows build which contains the windows folder.',\n default: config => config.root,\n },\n {\n name: '--arch [string]',\n description: 'The build architecture (ARM64, x86, x64)',\n default: 'x86',\n parse: parseBuildArch,\n },\n {\n name: '--singleproc',\n description: 'Disables multi-proc build',\n },\n {\n name: '--emulator',\n description: 'Deploys the app to an emulator',\n },\n {\n name: '--device',\n description: 'Deploys the app to a connected device',\n },\n {\n name: '--target [string]',\n description: 'Deploys the app to the specified GUID for a device.',\n },\n {\n name: '--remote-debugging',\n description: 'Deploys the app in remote debugging mode.',\n },\n {\n name: '--logging',\n description: 'Enables logging',\n },\n {\n name: '--no-packager',\n description: 'Do not launch packager while building',\n },\n {\n name: '--bundle',\n description:\n 'Enable Bundle configuration and it would be ReleaseBundle/DebugBundle other than Release/Debug',\n },\n {\n name: '--no-launch',\n description: 'Do not launch the app after deployment',\n },\n {\n name: '--no-autolink',\n description: 'Do not run autolinking',\n },\n {\n name: '--no-build',\n description: 'Do not build the solution',\n },\n {\n name: '--no-deploy',\n description: 'Do not deploy the app',\n },\n {\n name: '--deploy-from-layout',\n description: 'Force deploy from layout, even in release builds',\n },\n {\n name: '--sln [string]',\n description:\n \"Override the app solution file determined by 'react-native config', e.g. windows\\\\myApp.sln\",\n default: undefined,\n },\n {\n name: '--proj [string]',\n description:\n \"Override the app project file determined by 'react-native config', e.g. windows\\\\myApp\\\\myApp.vcxproj\",\n default: undefined,\n },\n {\n name: '--msbuildprops [string]',\n description:\n 'Comma separated props to pass to msbuild, eg: prop1=value1,prop2=value2',\n },\n {\n name: '--buildLogDirectory [string]',\n description: 'Optional directory where msbuild log files should be stored',\n },\n {\n name: '--info',\n description: 'Dump environment information',\n },\n {\n name: '--direct-debugging [number]',\n description: 'Enable direct debugging on specified port',\n parse: parseDirectDebuggingPort,\n },\n {\n name: '--no-telemetry',\n description:\n 'Disables sending telemetry that allows analysis of usage and failures of the react-native-windows CLI',\n },\n];\n\nfunction parseBuildArch(arg: string): BuildArch {\n const supportedArches: BuildArch[] = ['x86', 'x64', 'ARM64'];\n for (const supported of supportedArches) {\n if (arg.toLowerCase() === supported.toLowerCase()) {\n return supported;\n }\n }\n\n errorOut(`Unrecognized --arch '${arg}'. Expected one of ${supportedArches}`);\n}\n\nfunction parseDirectDebuggingPort(arg: string): number {\n const num = parseInt(arg, 10);\n\n if (!Number.isInteger(num)) {\n errorOut(`Expected argument '--direct-debugging' to be a number`);\n }\n if (num < 1024 || num >= 65535) {\n errorOut('Direct debugging port it out of range');\n }\n\n return num;\n}\n\nfunction errorOut(arg: string): never {\n console.error(arg);\n process.exit(1);\n}\n"]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
* @format
|
|
5
5
|
*/
|
|
6
|
-
import { Command, Dependency, ProjectConfig } from '@react-native-community/cli-types';
|
|
6
|
+
import { Command, CommandOption, Dependency, ProjectConfig } from '@react-native-community/cli-types';
|
|
7
7
|
import { WindowsProjectConfig } from '../../config/projectConfig';
|
|
8
8
|
import { Ora } from 'ora';
|
|
9
9
|
export declare class AutolinkWindows {
|
|
@@ -73,11 +73,14 @@ export declare class AutolinkWindows {
|
|
|
73
73
|
/** @return The CLI command to invoke autolink-windows independently */
|
|
74
74
|
getAutolinkWindowsCommand(): string;
|
|
75
75
|
}
|
|
76
|
-
interface AutoLinkOptions {
|
|
77
|
-
logging
|
|
78
|
-
check
|
|
76
|
+
export interface AutoLinkOptions {
|
|
77
|
+
logging?: boolean;
|
|
78
|
+
check?: boolean;
|
|
79
79
|
sln?: string;
|
|
80
80
|
proj?: string;
|
|
81
81
|
}
|
|
82
|
+
export declare const autolinkOptions: CommandOption[];
|
|
83
|
+
/**
|
|
84
|
+
* Performs auto-linking for RNW native modules and apps.
|
|
85
|
+
*/
|
|
82
86
|
export declare const autoLinkCommand: Command;
|
|
83
|
-
export {};
|
|
@@ -27,7 +27,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
28
28
|
};
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.autoLinkCommand = exports.AutolinkWindows = void 0;
|
|
30
|
+
exports.autoLinkCommand = exports.autolinkOptions = exports.AutolinkWindows = void 0;
|
|
31
31
|
// Types in this file are inaccurate compared to usage in terms of falsiness.
|
|
32
32
|
// We should try to rewrite some of this to do automated schema validation to
|
|
33
33
|
// guarantee correct types
|
|
@@ -599,31 +599,33 @@ async function updateAutoLink(args, config, options) {
|
|
|
599
599
|
throw e;
|
|
600
600
|
}
|
|
601
601
|
}
|
|
602
|
+
exports.autolinkOptions = [
|
|
603
|
+
{
|
|
604
|
+
name: '--logging',
|
|
605
|
+
description: 'Verbose output logging',
|
|
606
|
+
},
|
|
607
|
+
{
|
|
608
|
+
name: '--check',
|
|
609
|
+
description: 'Only check whether any autolinked files need to change',
|
|
610
|
+
},
|
|
611
|
+
{
|
|
612
|
+
name: '--sln [string]',
|
|
613
|
+
description: "Override the app solution file determined by 'react-native config', e.g. windows\\myApp.sln",
|
|
614
|
+
default: undefined,
|
|
615
|
+
},
|
|
616
|
+
{
|
|
617
|
+
name: '--proj [string]',
|
|
618
|
+
description: "Override the app project file determined by 'react-native config', e.g. windows\\myApp\\myApp.vcxproj",
|
|
619
|
+
default: undefined,
|
|
620
|
+
},
|
|
621
|
+
];
|
|
622
|
+
/**
|
|
623
|
+
* Performs auto-linking for RNW native modules and apps.
|
|
624
|
+
*/
|
|
602
625
|
exports.autoLinkCommand = {
|
|
603
626
|
name: 'autolink-windows',
|
|
604
627
|
description: 'performs autolinking',
|
|
605
628
|
func: updateAutoLink,
|
|
606
|
-
options:
|
|
607
|
-
{
|
|
608
|
-
name: '--logging',
|
|
609
|
-
description: 'Verbose output logging',
|
|
610
|
-
default: false,
|
|
611
|
-
},
|
|
612
|
-
{
|
|
613
|
-
name: '--check',
|
|
614
|
-
description: 'Only check whether any autolinked files need to change',
|
|
615
|
-
default: false,
|
|
616
|
-
},
|
|
617
|
-
{
|
|
618
|
-
name: '--sln [string]',
|
|
619
|
-
description: "Override the app solution file determined by 'react-native config', e.g. windows\\myApp.sln",
|
|
620
|
-
default: undefined,
|
|
621
|
-
},
|
|
622
|
-
{
|
|
623
|
-
name: '--proj [string]',
|
|
624
|
-
description: "Override the app project file determined by 'react-native config', e.g. windows\\myApp\\myApp.vcxproj",
|
|
625
|
-
default: undefined,
|
|
626
|
-
},
|
|
627
|
-
],
|
|
629
|
+
options: exports.autolinkOptions,
|
|
628
630
|
};
|
|
629
631
|
//# sourceMappingURL=autolink.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autolink.js","sourceRoot":"","sources":["../../../src/runWindows/utils/autolink.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\n// Types in this file are inaccurate compared to usage in terms of falsiness.\n// We should try to rewrite some of this to do automated schema validation to\n// guarantee correct types\n/* eslint-disable @typescript-eslint/no-unnecessary-condition */\n\nimport fs from 'fs';\nimport path from 'path';\nimport chalk from 'chalk';\nimport {performance} from 'perf_hooks';\n\nimport {newSpinner} from './commandWithProgress';\nimport * as vstools from './vstools';\nimport * as generatorCommon from '../../generator-common';\nimport * as configUtils from '../../config/configUtils';\n\nimport {\n Command,\n Config,\n Dependency,\n ProjectConfig,\n} from '@react-native-community/cli-types';\nimport {\n WindowsDependencyConfig,\n ProjectDependency,\n} from '../../config/dependencyConfig';\nimport {Project, WindowsProjectConfig} from '../../config/projectConfig';\nimport {CodedError} from '@react-native-windows/telemetry';\nimport {XMLSerializer} from 'xmldom';\nimport {Ora} from 'ora';\nconst formatter = require('xml-formatter');\n\nexport class AutolinkWindows {\n private changesNecessary: boolean;\n protected windowsAppConfig: WindowsProjectConfig;\n\n public areChangesNeeded() {\n return this.changesNecessary;\n }\n\n private getWindowsConfig() {\n return this.windowsAppConfig;\n }\n\n private getSolutionFile() {\n return path.join(\n this.getWindowsConfig().folder,\n this.getWindowsConfig().sourceDir,\n this.getWindowsConfig().solutionFile,\n );\n }\n\n constructor(\n readonly projectConfig: ProjectConfig,\n readonly dependenciesConfig: {[key: string]: Dependency},\n readonly options: AutoLinkOptions,\n ) {\n this.changesNecessary = false;\n if (\n !('windows' in this.projectConfig) ||\n this.projectConfig.windows === null\n ) {\n throw new CodedError(\n 'NoWindowsConfig',\n 'Windows auto-link only supported on Windows app projects',\n );\n }\n this.windowsAppConfig = projectConfig.windows;\n }\n\n public async run(spinner: Ora) {\n const verbose = this.options.logging;\n\n verboseMessage('', verbose);\n verboseMessage('Parsing project...', verbose);\n\n const rnwRoot = resolveRnwRoot(this.windowsAppConfig);\n const templateRoot = resolveTemplateRoot(this.windowsAppConfig);\n\n this.fixUpForSlnOption();\n this.fixUpForProjOption();\n\n verboseMessage('Found Windows app project, config:', verbose);\n verboseMessage(this.windowsAppConfig, verbose);\n\n this.validateRequiredAppProperties();\n\n const solutionFile = this.getSolutionFile();\n\n const windowsAppProjectConfig = this.windowsAppConfig.project;\n\n this.validateRequiredProjectProperties();\n\n const projectFile = this.getProjectFile();\n\n const projectDir = path.dirname(projectFile);\n const projectLang = windowsAppProjectConfig.projectLang!;\n\n verboseMessage('Parsing dependencies...', verbose);\n\n this.changesNecessary =\n (await this.ensureXAMLDialect()) || this.changesNecessary;\n\n // Generating cs/cpp files for app code consumption\n if (projectLang === 'cs') {\n this.changesNecessary =\n (await this.generateCSAutolinking(\n templateRoot,\n projectLang,\n projectDir,\n )) || this.changesNecessary;\n } else if (projectLang === 'cpp') {\n this.changesNecessary =\n (await this.generateCppAutolinking(\n templateRoot,\n projectLang,\n projectDir,\n )) || this.changesNecessary;\n }\n\n // Generating props for app project consumption\n let propertiesForProps = '';\n let csModuleNames: string[] = [];\n\n if (projectLang === 'cpp') {\n csModuleNames = this.getCSModules();\n\n if (csModuleNames.length > 0) {\n propertiesForProps += `\n <!-- Set due to dependency on C# module(s): ${csModuleNames.join()} -->\n <ConsumeCSharpModules Condition=\"'$(ConsumeCSharpModules)'==''\">true</ConsumeCSharpModules>`;\n }\n }\n\n this.changesNecessary =\n (await this.generateAutolinkProps(\n templateRoot,\n projectDir,\n propertiesForProps,\n )) || this.changesNecessary;\n\n // Generating targets for app project consumption\n this.changesNecessary =\n (await this.generateAutolinkTargets(projectDir, templateRoot)) ||\n this.changesNecessary;\n\n // Generating project entries for solution\n this.changesNecessary =\n this.updateSolution(rnwRoot, solutionFile) || this.changesNecessary;\n\n spinner.succeed();\n }\n\n /**\n * Handles the --proj command-line option by consuming its value into the windowsAppConfig\n */\n public fixUpForProjOption() {\n if (this.options.proj) {\n const projFile = path.join(\n this.windowsAppConfig.folder,\n this.options.proj,\n );\n\n const projectContents = configUtils.readProjectFile(projFile);\n\n this.windowsAppConfig.project = {\n projectFile: path.relative(\n path.join(\n this.windowsAppConfig.folder,\n this.windowsAppConfig.sourceDir,\n ),\n projFile,\n ),\n projectName: configUtils.getProjectName(projFile, projectContents),\n projectLang: configUtils.getProjectLanguage(projFile),\n projectGuid: configUtils.getProjectGuid(projectContents),\n };\n }\n }\n\n /**\n * Handles the --sln command-line option by consuming its value into the windowsAppConfig\n */\n public fixUpForSlnOption() {\n if (this.options.sln) {\n const slnFile = path.join(this.windowsAppConfig.folder, this.options.sln);\n this.windowsAppConfig.solutionFile = path.relative(\n path.join(\n this.windowsAppConfig.folder,\n this.windowsAppConfig.sourceDir,\n ),\n slnFile,\n );\n }\n }\n\n /** Validates the all of the required app (solution) properties are present and valid */\n public validateRequiredAppProperties() {\n const alwaysRequired: Array<keyof WindowsProjectConfig> = [\n 'folder',\n 'sourceDir',\n 'solutionFile',\n 'project',\n ];\n\n alwaysRequired.forEach(item => {\n if (\n !(item in this.windowsAppConfig) ||\n this.windowsAppConfig[item] === null\n ) {\n throw new CodedError(\n 'IncompleteConfig',\n `${item} is required but not specified by react-native config`,\n {item: item},\n );\n } else if (\n typeof this.windowsAppConfig[item] === 'string' &&\n (this.windowsAppConfig[item] as string).startsWith('Error: ')\n ) {\n throw new CodedError(\n 'InvalidConfig',\n `${item} invalid. ${this.windowsAppConfig[item]}`,\n {item: item},\n );\n }\n });\n }\n\n /** @return the full path to the project file (.vcxproj or .csproj) */\n private getProjectFile() {\n const windowsAppConfig = this.getWindowsConfig();\n return path.join(\n windowsAppConfig.folder,\n windowsAppConfig.sourceDir,\n windowsAppConfig.project.projectFile,\n );\n }\n\n /** Validates that all of the required app _project_ properties are present and valid */\n public validateRequiredProjectProperties() {\n const windowsAppProjectConfig = this.windowsAppConfig.project;\n const projectRequired: Array<keyof Project> = [\n 'projectFile',\n 'projectName',\n 'projectLang',\n 'projectGuid',\n ];\n\n projectRequired.forEach(item => {\n if (\n !(item in windowsAppProjectConfig) ||\n windowsAppProjectConfig[item] === null\n ) {\n throw new CodedError(\n 'IncompleteConfig',\n `project.${item} is required but not specified by react-native config`,\n {item: item},\n );\n } else if (\n typeof windowsAppProjectConfig[item] === 'string' &&\n windowsAppProjectConfig[item]!.startsWith('Error: ')\n ) {\n throw new CodedError(\n 'InvalidConfig',\n `project.${item} invalid. ${windowsAppProjectConfig[item]}`,\n {item: item},\n );\n }\n });\n }\n\n private async generateCppAutolinking(\n templateRoot: string,\n projectLang: string,\n projectDir: string,\n ) {\n const {cppPackageProviders, cppIncludes} = this.getCppReplacements();\n\n const cppFileName = 'AutolinkedNativeModules.g.cpp';\n\n const srcCppFile = path.join(\n templateRoot,\n `${projectLang}-app`,\n 'src',\n cppFileName,\n );\n\n const destCppFile = path.join(projectDir, cppFileName);\n\n verboseMessage(\n `Calculating ${chalk.bold(path.basename(destCppFile))}...`,\n this.options.logging,\n );\n\n const cppContents = generatorCommon.resolveContents(srcCppFile, {\n useMustache: true,\n autolinkCppIncludes: cppIncludes,\n autolinkCppPackageProviders: cppPackageProviders,\n });\n\n return await this.updateFile(destCppFile, cppContents);\n }\n\n public getCppReplacements() {\n let cppIncludes = '';\n let cppPackageProviders = '';\n const windowsDependencies = this.getWindowsDependencies();\n\n for (const dependencyName of Object.keys(windowsDependencies)) {\n windowsDependencies[dependencyName].projects.forEach(project => {\n if (project.directDependency) {\n cppIncludes += `\\n\\n// Includes from ${dependencyName}`;\n project.cppHeaders.forEach(header => {\n cppIncludes += `\\n#include <${header}>`;\n });\n\n cppPackageProviders += `\\n // IReactPackageProviders from ${dependencyName}`;\n project.cppPackageProviders.forEach(packageProvider => {\n cppPackageProviders += `\\n packageProviders.Append(winrt::${packageProvider}());`;\n });\n }\n });\n }\n\n if (cppPackageProviders === '') {\n // There are no windows dependencies, this would result in warning. C4100: 'packageProviders': unreferenced formal parameter.\n // therefore add a usage.\n cppPackageProviders = '\\n UNREFERENCED_PARAMETER(packageProviders);'; // CODESYNC: vnext\\local-cli\\generator-windows\\index.js\n }\n return {cppPackageProviders, cppIncludes};\n }\n\n private generateCSAutolinking(\n templateRoot: string,\n projectLang: string,\n projectDir: string,\n ) {\n const {\n csUsingNamespaces,\n csReactPackageProviders,\n } = this.getCsReplacements();\n\n const csFileName = 'AutolinkedNativeModules.g.cs';\n\n const srcCsFile = path.join(\n templateRoot,\n `${projectLang}-app`,\n 'src',\n csFileName,\n );\n\n const destCsFile = path.join(projectDir, csFileName);\n\n verboseMessage(\n `Calculating ${chalk.bold(path.basename(destCsFile))}...`,\n this.options.logging,\n );\n\n const csContents = generatorCommon.resolveContents(srcCsFile, {\n useMustache: true,\n autolinkCsUsingNamespaces: csUsingNamespaces,\n autolinkCsReactPackageProviders: csReactPackageProviders,\n });\n\n return this.updateFile(destCsFile, csContents);\n }\n\n public getCsReplacements() {\n let csUsingNamespaces = '';\n let csReactPackageProviders = '';\n\n const windowsDependencies = this.getWindowsDependencies();\n for (const dependencyName of Object.keys(windowsDependencies)) {\n windowsDependencies[dependencyName].projects.forEach(project => {\n if (project.directDependency) {\n csUsingNamespaces += `\\n\\n// Namespaces from ${dependencyName}`;\n project.csNamespaces.forEach(namespace => {\n csUsingNamespaces += `\\nusing ${namespace};`;\n });\n\n csReactPackageProviders += `\\n // IReactPackageProviders from ${dependencyName}`;\n project.csPackageProviders.forEach(packageProvider => {\n csReactPackageProviders += `\\n packageProviders.Add(new ${packageProvider}());`;\n });\n }\n });\n }\n return {csUsingNamespaces, csReactPackageProviders};\n }\n\n /** Cache of dependencies */\n private readonly windowsDependencies: Record<\n string,\n WindowsDependencyConfig\n > = {};\n\n private getWindowsDependencies() {\n if (Object.keys(this.windowsDependencies).length === 0) {\n for (const dependencyName of Object.keys(this.dependenciesConfig)) {\n const windowsDependency: WindowsDependencyConfig | undefined = this\n .dependenciesConfig[dependencyName].platforms.windows;\n\n if (windowsDependency) {\n verboseMessage(\n `${chalk.bold(dependencyName)} has Windows implementation, config:`,\n this.options.logging,\n );\n verboseMessage(windowsDependency, this.options.logging);\n\n let dependencyIsValid = true;\n\n dependencyIsValid = !!(\n dependencyIsValid &&\n 'sourceDir' in windowsDependency &&\n windowsDependency.sourceDir &&\n !windowsDependency.sourceDir.startsWith('Error: ')\n );\n\n if (\n 'projects' in windowsDependency &&\n Array.isArray(windowsDependency.projects)\n ) {\n if (\n windowsDependency.projects.length === 0 &&\n dependencyName.includes('react-native')\n ) {\n // the dependency is probably a react native module, but we didn't find a module project\n throw new CodedError(\n 'Autolinking',\n `Found a Windows solution for ${dependencyName} but no React Native for Windows native module projects`,\n );\n }\n windowsDependency.projects.forEach(project => {\n const itemsToCheck: Array<keyof ProjectDependency> = [\n 'projectFile',\n 'directDependency',\n ];\n itemsToCheck.forEach(item => {\n dependencyIsValid = !!(\n dependencyIsValid &&\n item in project &&\n project[item] !== '' &&\n !project[item]!.toString().startsWith('Error: ')\n );\n });\n });\n }\n\n if (dependencyIsValid) {\n verboseMessage(\n `Adding ${chalk.bold(dependencyName)}.`,\n this.options.logging,\n );\n this.windowsDependencies[dependencyName] = windowsDependency;\n } else {\n verboseMessage(\n `Invalid dependency configuration for dependency ${dependencyName}`,\n this.options.logging,\n );\n }\n }\n }\n }\n return this.windowsDependencies;\n }\n\n /**\n * Updates the target file with the expected contents if it's different.\n * @param filePath Path to the target file to update.\n * @param expectedContents The expected contents of the file.\n * @return Whether any changes were necessary.\n */\n protected async updateFile(filePath: string, expectedContents: string) {\n const fileName = chalk.bold(path.basename(filePath));\n verboseMessage(`Reading ${fileName}...`, this.options.logging);\n const actualContents = fs.existsSync(filePath)\n ? (await fs.promises.readFile(filePath)).toString()\n : '';\n\n const contentsChanged = expectedContents !== actualContents;\n\n if (contentsChanged) {\n verboseMessage(\n chalk.yellow(`${fileName} needs to be updated.`),\n this.options.logging,\n );\n if (!this.options.check) {\n verboseMessage(`Writing ${fileName}...`, this.options.logging);\n await fs.promises.writeFile(filePath, expectedContents, {\n encoding: 'utf8',\n flag: 'w',\n });\n }\n } else {\n verboseMessage(`No changes to ${fileName}.`, this.options.logging);\n }\n\n return contentsChanged;\n }\n\n private generateAutolinkTargets(projectDir: string, templateRoot: string) {\n let projectReferencesForTargets = '';\n\n const windowsDependencies = this.getWindowsDependencies();\n for (const dependencyName of Object.keys(windowsDependencies)) {\n windowsDependencies[dependencyName].projects.forEach(project => {\n if (project.directDependency) {\n const dependencyProjectFile = path.join(\n windowsDependencies[dependencyName].folder,\n windowsDependencies[dependencyName].sourceDir!,\n project.projectFile,\n );\n\n const relDependencyProjectFile = path.relative(\n projectDir,\n dependencyProjectFile,\n );\n\n projectReferencesForTargets += `\n <!-- Projects from ${dependencyName} -->\n <ProjectReference Include=\"$(ProjectDir)${relDependencyProjectFile}\">\n <Project>${project.projectGuid}</Project>\n </ProjectReference>`;\n }\n });\n }\n\n const targetFileName = 'AutolinkedNativeModules.g.targets';\n\n const srcTargetFile = path.join(\n templateRoot,\n `shared-app`,\n 'src',\n targetFileName,\n );\n\n const destTargetFile = path.join(projectDir, targetFileName);\n\n verboseMessage(\n `Calculating ${chalk.bold(path.basename(destTargetFile))}...`,\n this.options.logging,\n );\n\n const targetContents = generatorCommon.resolveContents(srcTargetFile, {\n useMustache: true,\n autolinkProjectReferencesForTargets: projectReferencesForTargets,\n });\n\n return this.updateFile(destTargetFile, targetContents);\n }\n\n private generateAutolinkProps(\n templateRoot: string,\n projectDir: string,\n propertiesForProps: string,\n ) {\n const propsFileName = 'AutolinkedNativeModules.g.props';\n\n const srcPropsFile = path.join(\n templateRoot,\n `shared-app`,\n 'src',\n propsFileName,\n );\n\n const destPropsFile = path.join(projectDir, propsFileName);\n\n verboseMessage(\n `Calculating ${chalk.bold(path.basename(destPropsFile))}...`,\n this.options.logging,\n );\n\n const propsContents = generatorCommon.resolveContents(srcPropsFile, {\n useMustache: true,\n autolinkPropertiesForProps: propertiesForProps,\n });\n\n return this.updateFile(destPropsFile, propsContents);\n }\n\n private getCSModules() {\n const csModuleNames: string[] = [];\n const windowsDependencies = this.getWindowsDependencies();\n for (const dependencyName of Object.keys(windowsDependencies)) {\n windowsDependencies[dependencyName].projects.forEach(project => {\n if (project.directDependency && project.projectLang === 'cs') {\n csModuleNames.push(project.projectName);\n }\n });\n }\n return csModuleNames;\n }\n\n private updateSolution(rnwRoot: string, solutionFile: string) {\n const projectsForSolution: Project[] = [];\n const windowsDependencies = this.getWindowsDependencies();\n\n for (const dependencyName of Object.keys(windowsDependencies)) {\n // Process dependency projects\n windowsDependencies[dependencyName].projects.forEach(project => {\n const dependencyProjectFile = path.join(\n windowsDependencies[dependencyName].folder,\n windowsDependencies[dependencyName].sourceDir!,\n project.projectFile,\n );\n\n projectsForSolution.push({\n projectFile: dependencyProjectFile,\n projectName: project.projectName,\n projectLang: project.projectLang,\n projectGuid: project.projectGuid,\n });\n });\n }\n\n const csModuleNames = this.getCSModules();\n if (csModuleNames.length > 0) {\n // Add managed projects\n projectsForSolution.push({\n projectFile: path.join(\n rnwRoot,\n 'Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj',\n ),\n projectName: 'Microsoft.ReactNative.Managed',\n projectLang: 'cs',\n projectGuid: '{F2824844-CE15-4242-9420-308923CD76C3}',\n });\n projectsForSolution.push({\n projectFile: path.join(\n rnwRoot,\n 'Microsoft.ReactNative.Managed.CodeGen//Microsoft.ReactNative.Managed.CodeGen.csproj',\n ),\n projectName: 'Microsoft.ReactNative.Managed.CodeGen',\n projectLang: 'cs',\n projectGuid: '{ADED4FBE-887D-4271-AF24-F0823BCE7961}',\n projectTypeGuid: vstools.dotNetCoreProjectTypeGuid,\n });\n }\n\n verboseMessage(\n `Calculating ${chalk.bold(path.basename(solutionFile))} changes...`,\n this.options.logging,\n );\n\n let changesNecessary = false;\n projectsForSolution.forEach(project => {\n const contentsChanged = vstools.addProjectToSolution(\n solutionFile,\n project,\n this.options.logging,\n this.options.check,\n );\n changesNecessary = changesNecessary || contentsChanged;\n });\n return changesNecessary;\n }\n\n protected getExperimentalFeaturesPropsXml() {\n const experimentalFeaturesProps = path.join(\n path.dirname(this.getSolutionFile()),\n 'ExperimentalFeatures.props',\n );\n if (fs.existsSync(experimentalFeaturesProps)) {\n const experimentalFeaturesContents = configUtils.readProjectFile(\n experimentalFeaturesProps,\n );\n return {\n path: experimentalFeaturesProps,\n content: experimentalFeaturesContents,\n };\n }\n return undefined;\n }\n\n public async ensureXAMLDialect() {\n let changesNeeded = false;\n const useWinUI3FromConfig = this.getWindowsConfig().useWinUI3;\n const experimentalFeatures = this.getExperimentalFeaturesPropsXml();\n if (experimentalFeatures) {\n const useWinUI3FromExperimentalFeatures =\n configUtils\n .tryFindPropertyValue(experimentalFeatures.content, 'UseWinUI3')\n ?.toLowerCase() === 'true';\n // Check if WinUI2xVersion is specified in experimental features\n const targetWinUI2xVersion = configUtils.tryFindPropertyValue(\n experimentalFeatures.content,\n 'WinUI2xVersion',\n );\n // Check if WinUI3Version is specified in experimental features\n const targetWinUI3xVersion = configUtils.tryFindPropertyValue(\n experimentalFeatures.content,\n 'WinUI3Version',\n );\n // Use the UseWinUI3 value in react-native.config.js, or if not present, the value from ExperimentalFeatures.props\n changesNeeded = await this.updatePackagesConfigXAMLDialect(\n useWinUI3FromConfig !== undefined\n ? useWinUI3FromConfig\n : useWinUI3FromExperimentalFeatures,\n targetWinUI2xVersion,\n targetWinUI3xVersion,\n );\n if (useWinUI3FromConfig !== undefined) {\n // Make sure ExperimentalFeatures.props matches the value that comes from react-native.config.js\n const node = experimentalFeatures.content.getElementsByTagName(\n 'UseWinUI3',\n );\n const newValue = useWinUI3FromConfig ? 'true' : 'false';\n changesNeeded = node.item(0)?.textContent !== newValue || changesNeeded;\n if (!this.options.check && changesNeeded) {\n node.item(0)!.textContent = newValue;\n const experimentalFeaturesOutput = new XMLSerializer().serializeToString(\n experimentalFeatures.content,\n );\n await this.updateFile(\n experimentalFeatures.path,\n experimentalFeaturesOutput,\n );\n }\n }\n }\n return changesNeeded;\n }\n\n protected getPackagesConfigXml() {\n const projectFile = this.getProjectFile();\n const packagesConfig = path.join(\n path.dirname(projectFile),\n 'packages.config',\n );\n\n if (fs.existsSync(packagesConfig)) {\n return {\n path: packagesConfig,\n content: configUtils.readProjectFile(packagesConfig),\n };\n }\n return undefined;\n }\n\n private async updatePackagesConfigXAMLDialect(\n useWinUI3: boolean,\n targetWinUI2xVersion: string | null,\n targetWinUI3xVersion: string | null,\n ) {\n let changed = false;\n const packagesConfig = this.getPackagesConfigXml();\n if (packagesConfig) {\n // if we don't have a packages.config, then this is a C# project, in which case we use <PackageReference> and dynamically pick the right XAML package.\n const project = this.getWindowsConfig();\n\n const winUIPropsPath = path.join(\n resolveRnwRoot(project),\n 'PropertySheets/WinUI.props',\n );\n const winuiPropsContents = configUtils.readProjectFile(winUIPropsPath);\n\n // Use the given WinUI2xVersion, otherwise fallback to WinUI.props\n const winui2xVersion =\n targetWinUI2xVersion ??\n configUtils.tryFindPropertyValue(winuiPropsContents, 'WinUI2xVersion');\n\n // Use the given WinUI3Version, otherwise fallback to WinUI.props\n const winui3Version =\n targetWinUI3xVersion ??\n configUtils.tryFindPropertyValue(winuiPropsContents, 'WinUI3Version');\n\n const dialects = [\n {id: 'Microsoft.WinUI', version: winui3Version!},\n {id: 'Microsoft.UI.Xaml', version: winui2xVersion!},\n ];\n const keepPkg = useWinUI3 ? dialects[0] : dialects[1];\n const removePkg = useWinUI3 ? dialects[1] : dialects[0];\n\n changed = this.updatePackagesConfig(\n packagesConfig,\n [removePkg],\n [keepPkg],\n );\n\n if (!this.options.check && changed) {\n const serializer = new XMLSerializer();\n const output = serializer.serializeToString(packagesConfig.content);\n const formattedXml = formatter(output, {indentation: ' '});\n await this.updateFile(packagesConfig.path, formattedXml);\n }\n }\n return changed;\n }\n\n private updatePackagesConfig(\n packagesConfig: {path: string; content: Document},\n removePkgs: {id: string; version: string}[],\n keepPkgs: {id: string; version: string}[],\n ) {\n let changed = false;\n const packageElements = packagesConfig.content.documentElement.getElementsByTagName(\n 'package',\n );\n\n const nodesToRemove: Element[] = [];\n\n for (let i = 0; i < packageElements.length; i++) {\n const packageElement = packageElements.item(i)!;\n const idAttr = packageElement!.getAttributeNode('id');\n const id = idAttr!.value;\n const keepPkg = keepPkgs.find(pkg => pkg.id === id);\n if (removePkgs.find(pkg => pkg.id === id)) {\n nodesToRemove.push(packageElement);\n changed = true;\n } else if (keepPkg) {\n changed =\n changed || keepPkg.version !== packageElement.getAttribute('version');\n packageElement.setAttribute('version', keepPkg.version!);\n keepPkgs = keepPkgs.filter(pkg => pkg.id !== keepPkg.id);\n }\n }\n\n nodesToRemove.forEach(pkg =>\n packagesConfig.content.documentElement.removeChild(pkg),\n );\n\n keepPkgs.forEach(keepPkg => {\n const newPkg = packagesConfig.content.createElement('package');\n\n Object.entries(keepPkg).forEach(([attr, value]) => {\n newPkg.setAttribute(attr, value as string);\n });\n newPkg.setAttribute('targetFramework', 'native');\n packagesConfig.content.documentElement.appendChild(newPkg);\n changed = true;\n });\n return changed;\n }\n\n /** @return The CLI command to invoke autolink-windows independently */\n public getAutolinkWindowsCommand() {\n const folder = this.windowsAppConfig.folder;\n\n const autolinkCommand = 'npx react-native autolink-windows';\n const autolinkArgs = `--sln \"${path.relative(\n folder,\n this.getSolutionFile(),\n )}\" --proj \"${path.relative(folder, this.getProjectFile())}\"`;\n return `${autolinkCommand} ${autolinkArgs}`;\n }\n}\n\n/**\n * Locates the react-native-windows directory\n * @param config project configuration\n */\nfunction resolveRnwRoot(projectConfig: WindowsProjectConfig) {\n const rnwPackage = path.dirname(\n require.resolve('react-native-windows/package.json', {\n paths: [projectConfig.folder],\n }),\n );\n return rnwPackage;\n}\n\n/**\n * Locates the react-native-windows directory containing template files\n * @param config project configuration\n */\nfunction resolveTemplateRoot(projectConfig: WindowsProjectConfig) {\n const rnwPackage = resolveRnwRoot(projectConfig);\n return path.join(rnwPackage, 'template');\n}\n\n/**\n * Logs the given message if verbose is True.\n * @param message The message to log.\n * @param verbose Whether or not verbose logging is enabled.\n */\nfunction verboseMessage(message: any, verbose: boolean) {\n if (verbose) {\n console.log(message);\n }\n}\n\n/**\n * Performs auto-linking for RNW native modules and apps.\n * @param args Unprocessed args passed from react-native CLI.\n * @param config Config passed from react-native CLI.\n * @param options Options passed from react-native CLI.\n */\nasync function updateAutoLink(\n args: string[],\n config: Config,\n options: AutoLinkOptions,\n) {\n const startTime = performance.now();\n const spinner = newSpinner(\n options.check ? 'Checking auto-linked files...' : 'Auto-linking...',\n );\n try {\n const autolink = new AutolinkWindows(\n config.project,\n config.dependencies,\n options,\n );\n await autolink.run(spinner);\n const endTime = performance.now();\n\n if (!autolink.areChangesNeeded()) {\n console.log(\n `${chalk.green(\n 'Success:',\n )} No auto-linking changes necessary. (${Math.round(\n endTime - startTime,\n )}ms)`,\n );\n } else if (options.check) {\n const autolinkCommand = autolink.getAutolinkWindowsCommand();\n console.log(\n `${chalk.yellow(\n 'Warning:',\n )} Auto-linking changes were necessary but ${chalk.bold(\n '--check',\n )} specified. Run '${chalk.bold(\n `${autolinkCommand}`,\n )}' to apply the changes. (${Math.round(endTime - startTime)}ms)`,\n );\n throw new CodedError(\n 'NeedAutolinking',\n `Auto-linking changes were necessary but --check was specified. Run '${autolinkCommand}' to apply the changes`,\n );\n } else {\n console.log(\n `${chalk.green(\n 'Success:',\n )} Auto-linking changes completed. (${Math.round(\n endTime - startTime,\n )}ms)`,\n );\n }\n } catch (e) {\n spinner.fail();\n const endTime = performance.now();\n console.log(\n `${chalk.red('Error:')} ${e.toString()}. (${Math.round(\n endTime - startTime,\n )}ms)`,\n );\n throw e;\n }\n}\n\ninterface AutoLinkOptions {\n logging: boolean;\n check: boolean;\n sln?: string;\n proj?: string;\n}\n\nexport const autoLinkCommand: Command = {\n name: 'autolink-windows',\n description: 'performs autolinking',\n func: updateAutoLink,\n options: [\n {\n name: '--logging',\n description: 'Verbose output logging',\n default: false,\n },\n {\n name: '--check',\n description: 'Only check whether any autolinked files need to change',\n default: false,\n },\n {\n name: '--sln [string]',\n description:\n \"Override the app solution file determined by 'react-native config', e.g. windows\\\\myApp.sln\",\n default: undefined,\n },\n {\n name: '--proj [string]',\n description:\n \"Override the app project file determined by 'react-native config', e.g. windows\\\\myApp\\\\myApp.vcxproj\",\n default: undefined,\n },\n ],\n};\n"]}
|
|
1
|
+
{"version":3,"file":"autolink.js","sourceRoot":"","sources":["../../../src/runWindows/utils/autolink.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\n// Types in this file are inaccurate compared to usage in terms of falsiness.\n// We should try to rewrite some of this to do automated schema validation to\n// guarantee correct types\n/* eslint-disable @typescript-eslint/no-unnecessary-condition */\n\nimport fs from 'fs';\nimport path from 'path';\nimport chalk from 'chalk';\nimport {performance} from 'perf_hooks';\n\nimport {newSpinner} from './commandWithProgress';\nimport * as vstools from './vstools';\nimport * as generatorCommon from '../../generator-common';\nimport * as configUtils from '../../config/configUtils';\n\nimport {\n Command,\n CommandOption,\n Config,\n Dependency,\n ProjectConfig,\n} from '@react-native-community/cli-types';\nimport {\n WindowsDependencyConfig,\n ProjectDependency,\n} from '../../config/dependencyConfig';\nimport {Project, WindowsProjectConfig} from '../../config/projectConfig';\nimport {CodedError} from '@react-native-windows/telemetry';\nimport {XMLSerializer} from 'xmldom';\nimport {Ora} from 'ora';\nconst formatter = require('xml-formatter');\n\nexport class AutolinkWindows {\n private changesNecessary: boolean;\n protected windowsAppConfig: WindowsProjectConfig;\n\n public areChangesNeeded() {\n return this.changesNecessary;\n }\n\n private getWindowsConfig() {\n return this.windowsAppConfig;\n }\n\n private getSolutionFile() {\n return path.join(\n this.getWindowsConfig().folder,\n this.getWindowsConfig().sourceDir,\n this.getWindowsConfig().solutionFile,\n );\n }\n\n constructor(\n readonly projectConfig: ProjectConfig,\n readonly dependenciesConfig: {[key: string]: Dependency},\n readonly options: AutoLinkOptions,\n ) {\n this.changesNecessary = false;\n if (\n !('windows' in this.projectConfig) ||\n this.projectConfig.windows === null\n ) {\n throw new CodedError(\n 'NoWindowsConfig',\n 'Windows auto-link only supported on Windows app projects',\n );\n }\n this.windowsAppConfig = projectConfig.windows;\n }\n\n public async run(spinner: Ora) {\n const verbose = this.options.logging;\n\n verboseMessage('', verbose);\n verboseMessage('Parsing project...', verbose);\n\n const rnwRoot = resolveRnwRoot(this.windowsAppConfig);\n const templateRoot = resolveTemplateRoot(this.windowsAppConfig);\n\n this.fixUpForSlnOption();\n this.fixUpForProjOption();\n\n verboseMessage('Found Windows app project, config:', verbose);\n verboseMessage(this.windowsAppConfig, verbose);\n\n this.validateRequiredAppProperties();\n\n const solutionFile = this.getSolutionFile();\n\n const windowsAppProjectConfig = this.windowsAppConfig.project;\n\n this.validateRequiredProjectProperties();\n\n const projectFile = this.getProjectFile();\n\n const projectDir = path.dirname(projectFile);\n const projectLang = windowsAppProjectConfig.projectLang!;\n\n verboseMessage('Parsing dependencies...', verbose);\n\n this.changesNecessary =\n (await this.ensureXAMLDialect()) || this.changesNecessary;\n\n // Generating cs/cpp files for app code consumption\n if (projectLang === 'cs') {\n this.changesNecessary =\n (await this.generateCSAutolinking(\n templateRoot,\n projectLang,\n projectDir,\n )) || this.changesNecessary;\n } else if (projectLang === 'cpp') {\n this.changesNecessary =\n (await this.generateCppAutolinking(\n templateRoot,\n projectLang,\n projectDir,\n )) || this.changesNecessary;\n }\n\n // Generating props for app project consumption\n let propertiesForProps = '';\n let csModuleNames: string[] = [];\n\n if (projectLang === 'cpp') {\n csModuleNames = this.getCSModules();\n\n if (csModuleNames.length > 0) {\n propertiesForProps += `\n <!-- Set due to dependency on C# module(s): ${csModuleNames.join()} -->\n <ConsumeCSharpModules Condition=\"'$(ConsumeCSharpModules)'==''\">true</ConsumeCSharpModules>`;\n }\n }\n\n this.changesNecessary =\n (await this.generateAutolinkProps(\n templateRoot,\n projectDir,\n propertiesForProps,\n )) || this.changesNecessary;\n\n // Generating targets for app project consumption\n this.changesNecessary =\n (await this.generateAutolinkTargets(projectDir, templateRoot)) ||\n this.changesNecessary;\n\n // Generating project entries for solution\n this.changesNecessary =\n this.updateSolution(rnwRoot, solutionFile) || this.changesNecessary;\n\n spinner.succeed();\n }\n\n /**\n * Handles the --proj command-line option by consuming its value into the windowsAppConfig\n */\n public fixUpForProjOption() {\n if (this.options.proj) {\n const projFile = path.join(\n this.windowsAppConfig.folder,\n this.options.proj,\n );\n\n const projectContents = configUtils.readProjectFile(projFile);\n\n this.windowsAppConfig.project = {\n projectFile: path.relative(\n path.join(\n this.windowsAppConfig.folder,\n this.windowsAppConfig.sourceDir,\n ),\n projFile,\n ),\n projectName: configUtils.getProjectName(projFile, projectContents),\n projectLang: configUtils.getProjectLanguage(projFile),\n projectGuid: configUtils.getProjectGuid(projectContents),\n };\n }\n }\n\n /**\n * Handles the --sln command-line option by consuming its value into the windowsAppConfig\n */\n public fixUpForSlnOption() {\n if (this.options.sln) {\n const slnFile = path.join(this.windowsAppConfig.folder, this.options.sln);\n this.windowsAppConfig.solutionFile = path.relative(\n path.join(\n this.windowsAppConfig.folder,\n this.windowsAppConfig.sourceDir,\n ),\n slnFile,\n );\n }\n }\n\n /** Validates the all of the required app (solution) properties are present and valid */\n public validateRequiredAppProperties() {\n const alwaysRequired: Array<keyof WindowsProjectConfig> = [\n 'folder',\n 'sourceDir',\n 'solutionFile',\n 'project',\n ];\n\n alwaysRequired.forEach(item => {\n if (\n !(item in this.windowsAppConfig) ||\n this.windowsAppConfig[item] === null\n ) {\n throw new CodedError(\n 'IncompleteConfig',\n `${item} is required but not specified by react-native config`,\n {item: item},\n );\n } else if (\n typeof this.windowsAppConfig[item] === 'string' &&\n (this.windowsAppConfig[item] as string).startsWith('Error: ')\n ) {\n throw new CodedError(\n 'InvalidConfig',\n `${item} invalid. ${this.windowsAppConfig[item]}`,\n {item: item},\n );\n }\n });\n }\n\n /** @return the full path to the project file (.vcxproj or .csproj) */\n private getProjectFile() {\n const windowsAppConfig = this.getWindowsConfig();\n return path.join(\n windowsAppConfig.folder,\n windowsAppConfig.sourceDir,\n windowsAppConfig.project.projectFile,\n );\n }\n\n /** Validates that all of the required app _project_ properties are present and valid */\n public validateRequiredProjectProperties() {\n const windowsAppProjectConfig = this.windowsAppConfig.project;\n const projectRequired: Array<keyof Project> = [\n 'projectFile',\n 'projectName',\n 'projectLang',\n 'projectGuid',\n ];\n\n projectRequired.forEach(item => {\n if (\n !(item in windowsAppProjectConfig) ||\n windowsAppProjectConfig[item] === null\n ) {\n throw new CodedError(\n 'IncompleteConfig',\n `project.${item} is required but not specified by react-native config`,\n {item: item},\n );\n } else if (\n typeof windowsAppProjectConfig[item] === 'string' &&\n windowsAppProjectConfig[item]!.startsWith('Error: ')\n ) {\n throw new CodedError(\n 'InvalidConfig',\n `project.${item} invalid. ${windowsAppProjectConfig[item]}`,\n {item: item},\n );\n }\n });\n }\n\n private async generateCppAutolinking(\n templateRoot: string,\n projectLang: string,\n projectDir: string,\n ) {\n const {cppPackageProviders, cppIncludes} = this.getCppReplacements();\n\n const cppFileName = 'AutolinkedNativeModules.g.cpp';\n\n const srcCppFile = path.join(\n templateRoot,\n `${projectLang}-app`,\n 'src',\n cppFileName,\n );\n\n const destCppFile = path.join(projectDir, cppFileName);\n\n verboseMessage(\n `Calculating ${chalk.bold(path.basename(destCppFile))}...`,\n this.options.logging,\n );\n\n const cppContents = generatorCommon.resolveContents(srcCppFile, {\n useMustache: true,\n autolinkCppIncludes: cppIncludes,\n autolinkCppPackageProviders: cppPackageProviders,\n });\n\n return await this.updateFile(destCppFile, cppContents);\n }\n\n public getCppReplacements() {\n let cppIncludes = '';\n let cppPackageProviders = '';\n const windowsDependencies = this.getWindowsDependencies();\n\n for (const dependencyName of Object.keys(windowsDependencies)) {\n windowsDependencies[dependencyName].projects.forEach(project => {\n if (project.directDependency) {\n cppIncludes += `\\n\\n// Includes from ${dependencyName}`;\n project.cppHeaders.forEach(header => {\n cppIncludes += `\\n#include <${header}>`;\n });\n\n cppPackageProviders += `\\n // IReactPackageProviders from ${dependencyName}`;\n project.cppPackageProviders.forEach(packageProvider => {\n cppPackageProviders += `\\n packageProviders.Append(winrt::${packageProvider}());`;\n });\n }\n });\n }\n\n if (cppPackageProviders === '') {\n // There are no windows dependencies, this would result in warning. C4100: 'packageProviders': unreferenced formal parameter.\n // therefore add a usage.\n cppPackageProviders = '\\n UNREFERENCED_PARAMETER(packageProviders);'; // CODESYNC: vnext\\local-cli\\generator-windows\\index.js\n }\n return {cppPackageProviders, cppIncludes};\n }\n\n private generateCSAutolinking(\n templateRoot: string,\n projectLang: string,\n projectDir: string,\n ) {\n const {\n csUsingNamespaces,\n csReactPackageProviders,\n } = this.getCsReplacements();\n\n const csFileName = 'AutolinkedNativeModules.g.cs';\n\n const srcCsFile = path.join(\n templateRoot,\n `${projectLang}-app`,\n 'src',\n csFileName,\n );\n\n const destCsFile = path.join(projectDir, csFileName);\n\n verboseMessage(\n `Calculating ${chalk.bold(path.basename(destCsFile))}...`,\n this.options.logging,\n );\n\n const csContents = generatorCommon.resolveContents(srcCsFile, {\n useMustache: true,\n autolinkCsUsingNamespaces: csUsingNamespaces,\n autolinkCsReactPackageProviders: csReactPackageProviders,\n });\n\n return this.updateFile(destCsFile, csContents);\n }\n\n public getCsReplacements() {\n let csUsingNamespaces = '';\n let csReactPackageProviders = '';\n\n const windowsDependencies = this.getWindowsDependencies();\n for (const dependencyName of Object.keys(windowsDependencies)) {\n windowsDependencies[dependencyName].projects.forEach(project => {\n if (project.directDependency) {\n csUsingNamespaces += `\\n\\n// Namespaces from ${dependencyName}`;\n project.csNamespaces.forEach(namespace => {\n csUsingNamespaces += `\\nusing ${namespace};`;\n });\n\n csReactPackageProviders += `\\n // IReactPackageProviders from ${dependencyName}`;\n project.csPackageProviders.forEach(packageProvider => {\n csReactPackageProviders += `\\n packageProviders.Add(new ${packageProvider}());`;\n });\n }\n });\n }\n return {csUsingNamespaces, csReactPackageProviders};\n }\n\n /** Cache of dependencies */\n private readonly windowsDependencies: Record<\n string,\n WindowsDependencyConfig\n > = {};\n\n private getWindowsDependencies() {\n if (Object.keys(this.windowsDependencies).length === 0) {\n for (const dependencyName of Object.keys(this.dependenciesConfig)) {\n const windowsDependency: WindowsDependencyConfig | undefined = this\n .dependenciesConfig[dependencyName].platforms.windows;\n\n if (windowsDependency) {\n verboseMessage(\n `${chalk.bold(dependencyName)} has Windows implementation, config:`,\n this.options.logging,\n );\n verboseMessage(windowsDependency, this.options.logging);\n\n let dependencyIsValid = true;\n\n dependencyIsValid = !!(\n dependencyIsValid &&\n 'sourceDir' in windowsDependency &&\n windowsDependency.sourceDir &&\n !windowsDependency.sourceDir.startsWith('Error: ')\n );\n\n if (\n 'projects' in windowsDependency &&\n Array.isArray(windowsDependency.projects)\n ) {\n if (\n windowsDependency.projects.length === 0 &&\n dependencyName.includes('react-native')\n ) {\n // the dependency is probably a react native module, but we didn't find a module project\n throw new CodedError(\n 'Autolinking',\n `Found a Windows solution for ${dependencyName} but no React Native for Windows native module projects`,\n );\n }\n windowsDependency.projects.forEach(project => {\n const itemsToCheck: Array<keyof ProjectDependency> = [\n 'projectFile',\n 'directDependency',\n ];\n itemsToCheck.forEach(item => {\n dependencyIsValid = !!(\n dependencyIsValid &&\n item in project &&\n project[item] !== '' &&\n !project[item]!.toString().startsWith('Error: ')\n );\n });\n });\n }\n\n if (dependencyIsValid) {\n verboseMessage(\n `Adding ${chalk.bold(dependencyName)}.`,\n this.options.logging,\n );\n this.windowsDependencies[dependencyName] = windowsDependency;\n } else {\n verboseMessage(\n `Invalid dependency configuration for dependency ${dependencyName}`,\n this.options.logging,\n );\n }\n }\n }\n }\n return this.windowsDependencies;\n }\n\n /**\n * Updates the target file with the expected contents if it's different.\n * @param filePath Path to the target file to update.\n * @param expectedContents The expected contents of the file.\n * @return Whether any changes were necessary.\n */\n protected async updateFile(filePath: string, expectedContents: string) {\n const fileName = chalk.bold(path.basename(filePath));\n verboseMessage(`Reading ${fileName}...`, this.options.logging);\n const actualContents = fs.existsSync(filePath)\n ? (await fs.promises.readFile(filePath)).toString()\n : '';\n\n const contentsChanged = expectedContents !== actualContents;\n\n if (contentsChanged) {\n verboseMessage(\n chalk.yellow(`${fileName} needs to be updated.`),\n this.options.logging,\n );\n if (!this.options.check) {\n verboseMessage(`Writing ${fileName}...`, this.options.logging);\n await fs.promises.writeFile(filePath, expectedContents, {\n encoding: 'utf8',\n flag: 'w',\n });\n }\n } else {\n verboseMessage(`No changes to ${fileName}.`, this.options.logging);\n }\n\n return contentsChanged;\n }\n\n private generateAutolinkTargets(projectDir: string, templateRoot: string) {\n let projectReferencesForTargets = '';\n\n const windowsDependencies = this.getWindowsDependencies();\n for (const dependencyName of Object.keys(windowsDependencies)) {\n windowsDependencies[dependencyName].projects.forEach(project => {\n if (project.directDependency) {\n const dependencyProjectFile = path.join(\n windowsDependencies[dependencyName].folder,\n windowsDependencies[dependencyName].sourceDir!,\n project.projectFile,\n );\n\n const relDependencyProjectFile = path.relative(\n projectDir,\n dependencyProjectFile,\n );\n\n projectReferencesForTargets += `\n <!-- Projects from ${dependencyName} -->\n <ProjectReference Include=\"$(ProjectDir)${relDependencyProjectFile}\">\n <Project>${project.projectGuid}</Project>\n </ProjectReference>`;\n }\n });\n }\n\n const targetFileName = 'AutolinkedNativeModules.g.targets';\n\n const srcTargetFile = path.join(\n templateRoot,\n `shared-app`,\n 'src',\n targetFileName,\n );\n\n const destTargetFile = path.join(projectDir, targetFileName);\n\n verboseMessage(\n `Calculating ${chalk.bold(path.basename(destTargetFile))}...`,\n this.options.logging,\n );\n\n const targetContents = generatorCommon.resolveContents(srcTargetFile, {\n useMustache: true,\n autolinkProjectReferencesForTargets: projectReferencesForTargets,\n });\n\n return this.updateFile(destTargetFile, targetContents);\n }\n\n private generateAutolinkProps(\n templateRoot: string,\n projectDir: string,\n propertiesForProps: string,\n ) {\n const propsFileName = 'AutolinkedNativeModules.g.props';\n\n const srcPropsFile = path.join(\n templateRoot,\n `shared-app`,\n 'src',\n propsFileName,\n );\n\n const destPropsFile = path.join(projectDir, propsFileName);\n\n verboseMessage(\n `Calculating ${chalk.bold(path.basename(destPropsFile))}...`,\n this.options.logging,\n );\n\n const propsContents = generatorCommon.resolveContents(srcPropsFile, {\n useMustache: true,\n autolinkPropertiesForProps: propertiesForProps,\n });\n\n return this.updateFile(destPropsFile, propsContents);\n }\n\n private getCSModules() {\n const csModuleNames: string[] = [];\n const windowsDependencies = this.getWindowsDependencies();\n for (const dependencyName of Object.keys(windowsDependencies)) {\n windowsDependencies[dependencyName].projects.forEach(project => {\n if (project.directDependency && project.projectLang === 'cs') {\n csModuleNames.push(project.projectName);\n }\n });\n }\n return csModuleNames;\n }\n\n private updateSolution(rnwRoot: string, solutionFile: string) {\n const projectsForSolution: Project[] = [];\n const windowsDependencies = this.getWindowsDependencies();\n\n for (const dependencyName of Object.keys(windowsDependencies)) {\n // Process dependency projects\n windowsDependencies[dependencyName].projects.forEach(project => {\n const dependencyProjectFile = path.join(\n windowsDependencies[dependencyName].folder,\n windowsDependencies[dependencyName].sourceDir!,\n project.projectFile,\n );\n\n projectsForSolution.push({\n projectFile: dependencyProjectFile,\n projectName: project.projectName,\n projectLang: project.projectLang,\n projectGuid: project.projectGuid,\n });\n });\n }\n\n const csModuleNames = this.getCSModules();\n if (csModuleNames.length > 0) {\n // Add managed projects\n projectsForSolution.push({\n projectFile: path.join(\n rnwRoot,\n 'Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj',\n ),\n projectName: 'Microsoft.ReactNative.Managed',\n projectLang: 'cs',\n projectGuid: '{F2824844-CE15-4242-9420-308923CD76C3}',\n });\n projectsForSolution.push({\n projectFile: path.join(\n rnwRoot,\n 'Microsoft.ReactNative.Managed.CodeGen//Microsoft.ReactNative.Managed.CodeGen.csproj',\n ),\n projectName: 'Microsoft.ReactNative.Managed.CodeGen',\n projectLang: 'cs',\n projectGuid: '{ADED4FBE-887D-4271-AF24-F0823BCE7961}',\n projectTypeGuid: vstools.dotNetCoreProjectTypeGuid,\n });\n }\n\n verboseMessage(\n `Calculating ${chalk.bold(path.basename(solutionFile))} changes...`,\n this.options.logging,\n );\n\n let changesNecessary = false;\n projectsForSolution.forEach(project => {\n const contentsChanged = vstools.addProjectToSolution(\n solutionFile,\n project,\n this.options.logging,\n this.options.check,\n );\n changesNecessary = changesNecessary || contentsChanged;\n });\n return changesNecessary;\n }\n\n protected getExperimentalFeaturesPropsXml() {\n const experimentalFeaturesProps = path.join(\n path.dirname(this.getSolutionFile()),\n 'ExperimentalFeatures.props',\n );\n if (fs.existsSync(experimentalFeaturesProps)) {\n const experimentalFeaturesContents = configUtils.readProjectFile(\n experimentalFeaturesProps,\n );\n return {\n path: experimentalFeaturesProps,\n content: experimentalFeaturesContents,\n };\n }\n return undefined;\n }\n\n public async ensureXAMLDialect() {\n let changesNeeded = false;\n const useWinUI3FromConfig = this.getWindowsConfig().useWinUI3;\n const experimentalFeatures = this.getExperimentalFeaturesPropsXml();\n if (experimentalFeatures) {\n const useWinUI3FromExperimentalFeatures =\n configUtils\n .tryFindPropertyValue(experimentalFeatures.content, 'UseWinUI3')\n ?.toLowerCase() === 'true';\n // Check if WinUI2xVersion is specified in experimental features\n const targetWinUI2xVersion = configUtils.tryFindPropertyValue(\n experimentalFeatures.content,\n 'WinUI2xVersion',\n );\n // Check if WinUI3Version is specified in experimental features\n const targetWinUI3xVersion = configUtils.tryFindPropertyValue(\n experimentalFeatures.content,\n 'WinUI3Version',\n );\n // Use the UseWinUI3 value in react-native.config.js, or if not present, the value from ExperimentalFeatures.props\n changesNeeded = await this.updatePackagesConfigXAMLDialect(\n useWinUI3FromConfig !== undefined\n ? useWinUI3FromConfig\n : useWinUI3FromExperimentalFeatures,\n targetWinUI2xVersion,\n targetWinUI3xVersion,\n );\n if (useWinUI3FromConfig !== undefined) {\n // Make sure ExperimentalFeatures.props matches the value that comes from react-native.config.js\n const node = experimentalFeatures.content.getElementsByTagName(\n 'UseWinUI3',\n );\n const newValue = useWinUI3FromConfig ? 'true' : 'false';\n changesNeeded = node.item(0)?.textContent !== newValue || changesNeeded;\n if (!this.options.check && changesNeeded) {\n node.item(0)!.textContent = newValue;\n const experimentalFeaturesOutput = new XMLSerializer().serializeToString(\n experimentalFeatures.content,\n );\n await this.updateFile(\n experimentalFeatures.path,\n experimentalFeaturesOutput,\n );\n }\n }\n }\n return changesNeeded;\n }\n\n protected getPackagesConfigXml() {\n const projectFile = this.getProjectFile();\n const packagesConfig = path.join(\n path.dirname(projectFile),\n 'packages.config',\n );\n\n if (fs.existsSync(packagesConfig)) {\n return {\n path: packagesConfig,\n content: configUtils.readProjectFile(packagesConfig),\n };\n }\n return undefined;\n }\n\n private async updatePackagesConfigXAMLDialect(\n useWinUI3: boolean,\n targetWinUI2xVersion: string | null,\n targetWinUI3xVersion: string | null,\n ) {\n let changed = false;\n const packagesConfig = this.getPackagesConfigXml();\n if (packagesConfig) {\n // if we don't have a packages.config, then this is a C# project, in which case we use <PackageReference> and dynamically pick the right XAML package.\n const project = this.getWindowsConfig();\n\n const winUIPropsPath = path.join(\n resolveRnwRoot(project),\n 'PropertySheets/WinUI.props',\n );\n const winuiPropsContents = configUtils.readProjectFile(winUIPropsPath);\n\n // Use the given WinUI2xVersion, otherwise fallback to WinUI.props\n const winui2xVersion =\n targetWinUI2xVersion ??\n configUtils.tryFindPropertyValue(winuiPropsContents, 'WinUI2xVersion');\n\n // Use the given WinUI3Version, otherwise fallback to WinUI.props\n const winui3Version =\n targetWinUI3xVersion ??\n configUtils.tryFindPropertyValue(winuiPropsContents, 'WinUI3Version');\n\n const dialects = [\n {id: 'Microsoft.WinUI', version: winui3Version!},\n {id: 'Microsoft.UI.Xaml', version: winui2xVersion!},\n ];\n const keepPkg = useWinUI3 ? dialects[0] : dialects[1];\n const removePkg = useWinUI3 ? dialects[1] : dialects[0];\n\n changed = this.updatePackagesConfig(\n packagesConfig,\n [removePkg],\n [keepPkg],\n );\n\n if (!this.options.check && changed) {\n const serializer = new XMLSerializer();\n const output = serializer.serializeToString(packagesConfig.content);\n const formattedXml = formatter(output, {indentation: ' '});\n await this.updateFile(packagesConfig.path, formattedXml);\n }\n }\n return changed;\n }\n\n private updatePackagesConfig(\n packagesConfig: {path: string; content: Document},\n removePkgs: {id: string; version: string}[],\n keepPkgs: {id: string; version: string}[],\n ) {\n let changed = false;\n const packageElements = packagesConfig.content.documentElement.getElementsByTagName(\n 'package',\n );\n\n const nodesToRemove: Element[] = [];\n\n for (let i = 0; i < packageElements.length; i++) {\n const packageElement = packageElements.item(i)!;\n const idAttr = packageElement!.getAttributeNode('id');\n const id = idAttr!.value;\n const keepPkg = keepPkgs.find(pkg => pkg.id === id);\n if (removePkgs.find(pkg => pkg.id === id)) {\n nodesToRemove.push(packageElement);\n changed = true;\n } else if (keepPkg) {\n changed =\n changed || keepPkg.version !== packageElement.getAttribute('version');\n packageElement.setAttribute('version', keepPkg.version!);\n keepPkgs = keepPkgs.filter(pkg => pkg.id !== keepPkg.id);\n }\n }\n\n nodesToRemove.forEach(pkg =>\n packagesConfig.content.documentElement.removeChild(pkg),\n );\n\n keepPkgs.forEach(keepPkg => {\n const newPkg = packagesConfig.content.createElement('package');\n\n Object.entries(keepPkg).forEach(([attr, value]) => {\n newPkg.setAttribute(attr, value as string);\n });\n newPkg.setAttribute('targetFramework', 'native');\n packagesConfig.content.documentElement.appendChild(newPkg);\n changed = true;\n });\n return changed;\n }\n\n /** @return The CLI command to invoke autolink-windows independently */\n public getAutolinkWindowsCommand() {\n const folder = this.windowsAppConfig.folder;\n\n const autolinkCommand = 'npx react-native autolink-windows';\n const autolinkArgs = `--sln \"${path.relative(\n folder,\n this.getSolutionFile(),\n )}\" --proj \"${path.relative(folder, this.getProjectFile())}\"`;\n return `${autolinkCommand} ${autolinkArgs}`;\n }\n}\n\n/**\n * Locates the react-native-windows directory\n * @param config project configuration\n */\nfunction resolveRnwRoot(projectConfig: WindowsProjectConfig) {\n const rnwPackage = path.dirname(\n require.resolve('react-native-windows/package.json', {\n paths: [projectConfig.folder],\n }),\n );\n return rnwPackage;\n}\n\n/**\n * Locates the react-native-windows directory containing template files\n * @param config project configuration\n */\nfunction resolveTemplateRoot(projectConfig: WindowsProjectConfig) {\n const rnwPackage = resolveRnwRoot(projectConfig);\n return path.join(rnwPackage, 'template');\n}\n\n/**\n * Logs the given message if verbose is True.\n * @param message The message to log.\n * @param verbose Whether or not verbose logging is enabled.\n */\nfunction verboseMessage(message: any, verbose?: boolean) {\n if (verbose) {\n console.log(message);\n }\n}\n\n/**\n * Performs auto-linking for RNW native modules and apps.\n * @param args Unprocessed args passed from react-native CLI.\n * @param config Config passed from react-native CLI.\n * @param options Options passed from react-native CLI.\n */\nasync function updateAutoLink(\n args: string[],\n config: Config,\n options: AutoLinkOptions,\n) {\n const startTime = performance.now();\n const spinner = newSpinner(\n options.check ? 'Checking auto-linked files...' : 'Auto-linking...',\n );\n try {\n const autolink = new AutolinkWindows(\n config.project,\n config.dependencies,\n options,\n );\n await autolink.run(spinner);\n const endTime = performance.now();\n\n if (!autolink.areChangesNeeded()) {\n console.log(\n `${chalk.green(\n 'Success:',\n )} No auto-linking changes necessary. (${Math.round(\n endTime - startTime,\n )}ms)`,\n );\n } else if (options.check) {\n const autolinkCommand = autolink.getAutolinkWindowsCommand();\n console.log(\n `${chalk.yellow(\n 'Warning:',\n )} Auto-linking changes were necessary but ${chalk.bold(\n '--check',\n )} specified. Run '${chalk.bold(\n `${autolinkCommand}`,\n )}' to apply the changes. (${Math.round(endTime - startTime)}ms)`,\n );\n throw new CodedError(\n 'NeedAutolinking',\n `Auto-linking changes were necessary but --check was specified. Run '${autolinkCommand}' to apply the changes`,\n );\n } else {\n console.log(\n `${chalk.green(\n 'Success:',\n )} Auto-linking changes completed. (${Math.round(\n endTime - startTime,\n )}ms)`,\n );\n }\n } catch (e) {\n spinner.fail();\n const endTime = performance.now();\n console.log(\n `${chalk.red('Error:')} ${e.toString()}. (${Math.round(\n endTime - startTime,\n )}ms)`,\n );\n throw e;\n }\n}\n\nexport interface AutoLinkOptions {\n logging?: boolean;\n check?: boolean;\n sln?: string;\n proj?: string;\n}\n\nexport const autolinkOptions: CommandOption[] = [\n {\n name: '--logging',\n description: 'Verbose output logging',\n },\n {\n name: '--check',\n description: 'Only check whether any autolinked files need to change',\n },\n {\n name: '--sln [string]',\n description:\n \"Override the app solution file determined by 'react-native config', e.g. windows\\\\myApp.sln\",\n default: undefined,\n },\n {\n name: '--proj [string]',\n description:\n \"Override the app project file determined by 'react-native config', e.g. windows\\\\myApp\\\\myApp.vcxproj\",\n default: undefined,\n },\n];\n\n/**\n * Performs auto-linking for RNW native modules and apps.\n */\nexport const autoLinkCommand: Command = {\n name: 'autolink-windows',\n description: 'performs autolinking',\n func: updateAutoLink,\n options: autolinkOptions,\n};\n"]}
|
|
@@ -55,7 +55,7 @@ function getBuildConfiguration(options) {
|
|
|
55
55
|
}
|
|
56
56
|
exports.getBuildConfiguration = getBuildConfiguration;
|
|
57
57
|
function shouldLaunchApp(options) {
|
|
58
|
-
return options.launch;
|
|
58
|
+
return options.launch === true;
|
|
59
59
|
}
|
|
60
60
|
function getAppPackage(options, projectName) {
|
|
61
61
|
const configuration = getBuildConfiguration(options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/runWindows/utils/deploy.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport {spawn, execSync, SpawnOptions} from 'child_process';\nimport fs from 'fs';\nimport http from 'http';\nimport path from 'path';\nimport glob from 'glob';\nimport parse from 'xml-parser';\nimport WinAppDeployTool from './winappdeploytool';\nimport {\n newInfo,\n newSuccess,\n newError,\n newWarn,\n newSpinner,\n commandWithProgress,\n runPowerShellScriptFunction,\n} from './commandWithProgress';\nimport * as build from './build';\nimport {BuildConfig, RunWindowsOptions} from '../runWindowsOptions';\nimport MSBuildTools from './msbuildtools';\nimport {Config} from '@react-native-community/cli-types';\nimport {WindowsProjectConfig} from '../../config/projectConfig';\nimport {CodedError} from '@react-native-windows/telemetry';\nimport Version from './version';\n\nfunction pushd(pathArg: string): () => void {\n const cwd = process.cwd();\n process.chdir(pathArg);\n return () => process.chdir(cwd);\n}\n\nexport function getBuildConfiguration(options: RunWindowsOptions): BuildConfig {\n return options.release\n ? options.bundle\n ? 'ReleaseBundle'\n : 'Release'\n : options.bundle\n ? 'DebugBundle'\n : 'Debug';\n}\n\nfunction shouldLaunchApp(options: RunWindowsOptions): boolean {\n return options.launch;\n}\n\nfunction getAppPackage(\n options: RunWindowsOptions,\n projectName?: string,\n): string {\n const configuration = getBuildConfiguration(options);\n const packageFolder =\n options.arch === 'x86'\n ? `{*_x86_${configuration}_*,*_Win32_${configuration}_*}`\n : `*_${options.arch}_${configuration}_*`;\n\n const appPackageGlob = `${options.root}/windows/{*/AppPackages,AppPackages/*}/${packageFolder}`;\n const appPackageCandidates = glob.sync(appPackageGlob);\n let appPackage;\n if (appPackageCandidates.length === 1 || !projectName) {\n appPackage = appPackageCandidates[0];\n } else if (appPackageCandidates.length > 1) {\n const filteredAppPackageCandidates = appPackageCandidates.filter(x =>\n x.includes(projectName),\n );\n if (filteredAppPackageCandidates.length >= 1) {\n appPackage = filteredAppPackageCandidates[0];\n }\n }\n\n if (!appPackage && options.release) {\n // in the latest vs, Release is removed\n newWarn(\n 'No package found in *_Release_* folder, removing the _Release_ prefix and checking again',\n );\n\n const rootGlob = `${options.root}/windows/{*/AppPackages,AppPackages/*}`;\n const newGlob = `${rootGlob}/*_${\n options.arch === 'x86' ? '{Win32,x86}' : options.arch\n }_Test`;\n\n const result = glob.sync(newGlob);\n if (result.length > 1 && projectName) {\n const newFilteredGlobs = result.filter(x => x.includes(projectName));\n if (newFilteredGlobs.length >= 1) {\n newWarn(`More than one app package found: ${result}`);\n }\n appPackage = newFilteredGlobs[0];\n } else if (result.length === 1) {\n // we're good\n appPackage = result[0];\n }\n }\n\n if (!appPackage) {\n throw new CodedError(\n 'NoAppPackage',\n `Unable to find app package using search path: \"${appPackageGlob}\"`,\n );\n }\n return appPackage;\n}\n\nfunction getWindowsStoreAppUtils(options: RunWindowsOptions) {\n const popd = pushd(options.root);\n const windowsStoreAppUtilsPath = path.resolve(\n __dirname,\n '..',\n '..',\n '..',\n 'powershell',\n 'WindowsStoreAppUtils.ps1',\n );\n execSync(`powershell -NoProfile Unblock-File \"${windowsStoreAppUtilsPath}\"`);\n popd();\n return windowsStoreAppUtilsPath;\n}\n\nfunction getAppxManifestPath(\n options: RunWindowsOptions,\n projectName?: string,\n): string {\n const configuration = getBuildConfiguration(options);\n // C++ x86 manifest would go under windows/Debug whereas x64 goes under windows/x64/Debug\n // If we've built both, this causes us to end up with two matches, so we have to carefully select the right folder\n let archFolder;\n if (options.arch !== 'x86') {\n archFolder = `${options.arch}/${configuration}`;\n } else {\n archFolder = `${configuration}`;\n }\n\n const appxManifestGlob = `windows/{*/bin/${options.arch}/${configuration},${archFolder}/*,target/${options.arch}/${configuration}}/AppxManifest.xml`;\n const globs = glob.sync(path.join(options.root, appxManifestGlob));\n let appxPath: string;\n if (globs.length === 1 || !projectName) {\n appxPath = globs[0];\n } else {\n const filteredGlobs = globs.filter(x => x.includes(projectName));\n appxPath = filteredGlobs[0];\n if (filteredGlobs.length > 1) {\n newWarn(\n `More than one appxmanifest for ${projectName}: ${filteredGlobs.join(\n ',',\n )}`,\n );\n newWarn(`Choosing ${appxPath}`);\n }\n }\n\n if (!appxPath) {\n throw new CodedError(\n 'NoAppxManifest',\n `Unable to find AppxManifest from \"${options.root}\", using search path: \"${appxManifestGlob}\" `,\n );\n }\n return appxPath;\n}\n\nfunction parseAppxManifest(appxManifestPath: string): parse.Document {\n return parse(fs.readFileSync(appxManifestPath, 'utf8'));\n}\n\nfunction getAppxManifest(options: RunWindowsOptions): parse.Document {\n return parseAppxManifest(getAppxManifestPath(options, undefined));\n}\n\nfunction handleResponseError(e: Error): never {\n if (e.message.indexOf('Error code -2146233088')) {\n throw new CodedError(\n 'NoDevice',\n `No Windows Mobile device was detected: ${e.message}`,\n );\n } else {\n throw new CodedError(\n 'AppDidNotDeploy',\n `Unexpected error deploying app: ${e.message}`,\n );\n }\n}\n\n// Errors: 0x80073d10 - bad architecture\nexport async function deployToDevice(\n options: RunWindowsOptions,\n verbose: boolean,\n) {\n const appPackageFolder = getAppPackage(options);\n\n const deployTarget = options.target\n ? options.target\n : options.emulator\n ? 'emulator'\n : 'device';\n const deployTool = new WinAppDeployTool();\n const appxManifest = getAppxManifest(options);\n const shouldLaunch = shouldLaunchApp(options);\n const identity = appxManifest.root.children.filter(x => {\n return x.name === 'mp:PhoneIdentity';\n })[0];\n const appName = identity.attributes.PhoneProductId;\n\n const device = deployTool.findDevice(deployTarget);\n\n try {\n await deployTool.uninstallAppPackage(appName, device, verbose);\n } catch (e) {\n newWarn('Failed to uninstall app from ' + device.name);\n }\n\n const appxFile = glob.sync(path.join(appPackageFolder, '*.appx'))[0];\n try {\n await deployTool.installAppPackage(\n appxFile,\n device,\n shouldLaunch,\n false,\n verbose,\n );\n } catch (e) {\n if (e.message.indexOf('Error code 2148734208 for command') !== -1) {\n await deployTool.installAppPackage(\n appxFile,\n device,\n shouldLaunch,\n true,\n verbose,\n );\n } else {\n handleResponseError(e);\n }\n }\n}\n\nexport async function deployToDesktop(\n options: RunWindowsOptions,\n verbose: boolean,\n config: Config,\n buildTools: MSBuildTools,\n) {\n const windowsConfig: Partial<WindowsProjectConfig> | undefined =\n config.project.windows;\n const slnFile =\n windowsConfig && windowsConfig.solutionFile && windowsConfig.sourceDir\n ? path.join(windowsConfig.sourceDir, windowsConfig.solutionFile)\n : options.sln!;\n const projectName =\n windowsConfig && windowsConfig.project && windowsConfig.project.projectName\n ? windowsConfig.project.projectName\n : path.parse(options.proj!).name;\n const windowsStoreAppUtils = getWindowsStoreAppUtils(options);\n const appxManifestPath = getAppxManifestPath(options, projectName);\n const appxManifest = parseAppxManifest(appxManifestPath);\n const identity = appxManifest.root.children.filter(x => {\n return x.name === 'Identity';\n })[0];\n const appName = identity.attributes.Name;\n\n const vsVersion = Version.fromString(buildTools.installationVersion);\n\n const args = [];\n if (options.remoteDebugging) {\n args.push('--remote-debugging');\n }\n\n if (options.directDebugging) {\n args.push('--direct-debugging', options.directDebugging.toString());\n }\n\n await runPowerShellScriptFunction(\n 'Enabling Developer Mode',\n windowsStoreAppUtils,\n 'EnableDevMode',\n verbose,\n 'EnableDevModeFailure',\n );\n\n const appPackageFolder = getAppPackage(options, projectName);\n\n if (options.release && !options.deployFromLayout) {\n await runPowerShellScriptFunction(\n 'Removing old version of the app',\n windowsStoreAppUtils,\n `Uninstall-App ${appName}`,\n verbose,\n 'RemoveOldAppVersionFailure',\n );\n\n const script = glob.sync(\n path.join(appPackageFolder, 'Add-AppDevPackage.ps1'),\n )[0];\n\n await runPowerShellScriptFunction(\n 'Installing new version of the app',\n windowsStoreAppUtils,\n `Install-App \"${script}\" -Force`,\n verbose,\n 'InstallAppFailure',\n );\n } else {\n // If we have DeployAppRecipe.exe, use it (start in 16.8.4, earlier 16.8 versions have bugs)\n const appxRecipe = path.join(\n path.dirname(appxManifestPath),\n `${projectName}.build.appxrecipe`,\n );\n const ideFolder = `${buildTools.installationPath}\\\\Common7\\\\IDE`;\n const deployAppxRecipeExePath = `${ideFolder}\\\\DeployAppRecipe.exe`;\n if (\n vsVersion.gte(Version.fromString('16.8.30906.45')) &&\n fs.existsSync(deployAppxRecipeExePath)\n ) {\n await commandWithProgress(\n newSpinner('Deploying'),\n `Deploying ${appxRecipe}`,\n deployAppxRecipeExePath,\n [appxRecipe],\n verbose,\n 'DeployRecipeFailure',\n );\n } else {\n // Install the app package's dependencies before attempting to deploy.\n await runPowerShellScriptFunction(\n 'Installing dependent framework packages',\n windowsStoreAppUtils,\n `Install-AppDependencies ${appxManifestPath} ${appPackageFolder} ${options.arch}`,\n verbose,\n 'InstallAppDependenciesFailure',\n );\n await build.buildSolution(\n buildTools,\n slnFile,\n /* options.release ? 'Release' : */ 'Debug',\n options.arch,\n {DeployLayout: 'true'},\n verbose,\n 'deploy',\n options.buildLogDirectory,\n );\n }\n }\n\n const appFamilyName = execSync(\n `powershell -NoProfile -c $(Get-AppxPackage -Name ${appName}).PackageFamilyName`,\n )\n .toString()\n .trim();\n\n if (!appFamilyName) {\n throw new CodedError(\n 'AppDidNotDeploy',\n 'Fail to check the installed app, maybe developer mode is off on Windows',\n );\n }\n\n const loopbackText = 'Verifying loopbackExempt';\n const loopbackSpinner = newSpinner(loopbackText);\n\n await commandWithProgress(\n loopbackSpinner,\n loopbackText,\n 'CheckNetIsolation',\n `LoopbackExempt -a -n=${appFamilyName}`.split(' '),\n verbose,\n 'CheckNetIsolationFailure',\n );\n\n if (shouldLaunchApp(options)) {\n await runPowerShellScriptFunction(\n 'Starting the app',\n windowsStoreAppUtils,\n `Start-Locally ${appName} ${args}`,\n verbose,\n 'AppStartupFailure',\n );\n } else {\n newInfo('Skip the step to start the app');\n }\n}\n\nexport function startServerInNewWindow(\n options: RunWindowsOptions,\n verbose: boolean,\n): Promise<void> {\n return new Promise(resolve => {\n http\n .get('http://localhost:8081/status', res => {\n if (res.statusCode === 200) {\n newSuccess('React-Native Server already started');\n } else {\n newError('React-Native Server not responding');\n }\n resolve();\n })\n .on('error', () => {\n launchServer(options, verbose);\n resolve();\n });\n });\n}\n\nfunction launchServer(options: RunWindowsOptions, verbose: boolean) {\n newSuccess('Starting the React-Native Server');\n const opts: SpawnOptions = {\n cwd: options.root,\n detached: true,\n stdio: verbose ? 'inherit' : 'ignore',\n };\n\n spawn('cmd.exe', ['/C', 'start npx --no-install react-native start'], opts);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/runWindows/utils/deploy.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport {spawn, execSync, SpawnOptions} from 'child_process';\nimport fs from 'fs';\nimport http from 'http';\nimport path from 'path';\nimport glob from 'glob';\nimport parse from 'xml-parser';\nimport WinAppDeployTool from './winappdeploytool';\nimport {\n newInfo,\n newSuccess,\n newError,\n newWarn,\n newSpinner,\n commandWithProgress,\n runPowerShellScriptFunction,\n} from './commandWithProgress';\nimport * as build from './build';\nimport {BuildConfig, RunWindowsOptions} from '../runWindowsOptions';\nimport MSBuildTools from './msbuildtools';\nimport {Config} from '@react-native-community/cli-types';\nimport {WindowsProjectConfig} from '../../config/projectConfig';\nimport {CodedError} from '@react-native-windows/telemetry';\nimport Version from './version';\n\nfunction pushd(pathArg: string): () => void {\n const cwd = process.cwd();\n process.chdir(pathArg);\n return () => process.chdir(cwd);\n}\n\nexport function getBuildConfiguration(options: RunWindowsOptions): BuildConfig {\n return options.release\n ? options.bundle\n ? 'ReleaseBundle'\n : 'Release'\n : options.bundle\n ? 'DebugBundle'\n : 'Debug';\n}\n\nfunction shouldLaunchApp(options: RunWindowsOptions): boolean {\n return options.launch === true;\n}\n\nfunction getAppPackage(\n options: RunWindowsOptions,\n projectName?: string,\n): string {\n const configuration = getBuildConfiguration(options);\n const packageFolder =\n options.arch === 'x86'\n ? `{*_x86_${configuration}_*,*_Win32_${configuration}_*}`\n : `*_${options.arch}_${configuration}_*`;\n\n const appPackageGlob = `${options.root}/windows/{*/AppPackages,AppPackages/*}/${packageFolder}`;\n const appPackageCandidates = glob.sync(appPackageGlob);\n let appPackage;\n if (appPackageCandidates.length === 1 || !projectName) {\n appPackage = appPackageCandidates[0];\n } else if (appPackageCandidates.length > 1) {\n const filteredAppPackageCandidates = appPackageCandidates.filter(x =>\n x.includes(projectName),\n );\n if (filteredAppPackageCandidates.length >= 1) {\n appPackage = filteredAppPackageCandidates[0];\n }\n }\n\n if (!appPackage && options.release) {\n // in the latest vs, Release is removed\n newWarn(\n 'No package found in *_Release_* folder, removing the _Release_ prefix and checking again',\n );\n\n const rootGlob = `${options.root}/windows/{*/AppPackages,AppPackages/*}`;\n const newGlob = `${rootGlob}/*_${\n options.arch === 'x86' ? '{Win32,x86}' : options.arch\n }_Test`;\n\n const result = glob.sync(newGlob);\n if (result.length > 1 && projectName) {\n const newFilteredGlobs = result.filter(x => x.includes(projectName));\n if (newFilteredGlobs.length >= 1) {\n newWarn(`More than one app package found: ${result}`);\n }\n appPackage = newFilteredGlobs[0];\n } else if (result.length === 1) {\n // we're good\n appPackage = result[0];\n }\n }\n\n if (!appPackage) {\n throw new CodedError(\n 'NoAppPackage',\n `Unable to find app package using search path: \"${appPackageGlob}\"`,\n );\n }\n return appPackage;\n}\n\nfunction getWindowsStoreAppUtils(options: RunWindowsOptions) {\n const popd = pushd(options.root);\n const windowsStoreAppUtilsPath = path.resolve(\n __dirname,\n '..',\n '..',\n '..',\n 'powershell',\n 'WindowsStoreAppUtils.ps1',\n );\n execSync(`powershell -NoProfile Unblock-File \"${windowsStoreAppUtilsPath}\"`);\n popd();\n return windowsStoreAppUtilsPath;\n}\n\nfunction getAppxManifestPath(\n options: RunWindowsOptions,\n projectName?: string,\n): string {\n const configuration = getBuildConfiguration(options);\n // C++ x86 manifest would go under windows/Debug whereas x64 goes under windows/x64/Debug\n // If we've built both, this causes us to end up with two matches, so we have to carefully select the right folder\n let archFolder;\n if (options.arch !== 'x86') {\n archFolder = `${options.arch}/${configuration}`;\n } else {\n archFolder = `${configuration}`;\n }\n\n const appxManifestGlob = `windows/{*/bin/${options.arch}/${configuration},${archFolder}/*,target/${options.arch}/${configuration}}/AppxManifest.xml`;\n const globs = glob.sync(path.join(options.root, appxManifestGlob));\n let appxPath: string;\n if (globs.length === 1 || !projectName) {\n appxPath = globs[0];\n } else {\n const filteredGlobs = globs.filter(x => x.includes(projectName));\n appxPath = filteredGlobs[0];\n if (filteredGlobs.length > 1) {\n newWarn(\n `More than one appxmanifest for ${projectName}: ${filteredGlobs.join(\n ',',\n )}`,\n );\n newWarn(`Choosing ${appxPath}`);\n }\n }\n\n if (!appxPath) {\n throw new CodedError(\n 'NoAppxManifest',\n `Unable to find AppxManifest from \"${options.root}\", using search path: \"${appxManifestGlob}\" `,\n );\n }\n return appxPath;\n}\n\nfunction parseAppxManifest(appxManifestPath: string): parse.Document {\n return parse(fs.readFileSync(appxManifestPath, 'utf8'));\n}\n\nfunction getAppxManifest(options: RunWindowsOptions): parse.Document {\n return parseAppxManifest(getAppxManifestPath(options, undefined));\n}\n\nfunction handleResponseError(e: Error): never {\n if (e.message.indexOf('Error code -2146233088')) {\n throw new CodedError(\n 'NoDevice',\n `No Windows Mobile device was detected: ${e.message}`,\n );\n } else {\n throw new CodedError(\n 'AppDidNotDeploy',\n `Unexpected error deploying app: ${e.message}`,\n );\n }\n}\n\n// Errors: 0x80073d10 - bad architecture\nexport async function deployToDevice(\n options: RunWindowsOptions,\n verbose: boolean,\n) {\n const appPackageFolder = getAppPackage(options);\n\n const deployTarget = options.target\n ? options.target\n : options.emulator\n ? 'emulator'\n : 'device';\n const deployTool = new WinAppDeployTool();\n const appxManifest = getAppxManifest(options);\n const shouldLaunch = shouldLaunchApp(options);\n const identity = appxManifest.root.children.filter(x => {\n return x.name === 'mp:PhoneIdentity';\n })[0];\n const appName = identity.attributes.PhoneProductId;\n\n const device = deployTool.findDevice(deployTarget);\n\n try {\n await deployTool.uninstallAppPackage(appName, device, verbose);\n } catch (e) {\n newWarn('Failed to uninstall app from ' + device.name);\n }\n\n const appxFile = glob.sync(path.join(appPackageFolder, '*.appx'))[0];\n try {\n await deployTool.installAppPackage(\n appxFile,\n device,\n shouldLaunch,\n false,\n verbose,\n );\n } catch (e) {\n if (e.message.indexOf('Error code 2148734208 for command') !== -1) {\n await deployTool.installAppPackage(\n appxFile,\n device,\n shouldLaunch,\n true,\n verbose,\n );\n } else {\n handleResponseError(e);\n }\n }\n}\n\nexport async function deployToDesktop(\n options: RunWindowsOptions,\n verbose: boolean,\n config: Config,\n buildTools: MSBuildTools,\n) {\n const windowsConfig: Partial<WindowsProjectConfig> | undefined =\n config.project.windows;\n const slnFile =\n windowsConfig && windowsConfig.solutionFile && windowsConfig.sourceDir\n ? path.join(windowsConfig.sourceDir, windowsConfig.solutionFile)\n : options.sln!;\n const projectName =\n windowsConfig && windowsConfig.project && windowsConfig.project.projectName\n ? windowsConfig.project.projectName\n : path.parse(options.proj!).name;\n const windowsStoreAppUtils = getWindowsStoreAppUtils(options);\n const appxManifestPath = getAppxManifestPath(options, projectName);\n const appxManifest = parseAppxManifest(appxManifestPath);\n const identity = appxManifest.root.children.filter(x => {\n return x.name === 'Identity';\n })[0];\n const appName = identity.attributes.Name;\n\n const vsVersion = Version.fromString(buildTools.installationVersion);\n\n const args = [];\n if (options.remoteDebugging) {\n args.push('--remote-debugging');\n }\n\n if (options.directDebugging) {\n args.push('--direct-debugging', options.directDebugging.toString());\n }\n\n await runPowerShellScriptFunction(\n 'Enabling Developer Mode',\n windowsStoreAppUtils,\n 'EnableDevMode',\n verbose,\n 'EnableDevModeFailure',\n );\n\n const appPackageFolder = getAppPackage(options, projectName);\n\n if (options.release && !options.deployFromLayout) {\n await runPowerShellScriptFunction(\n 'Removing old version of the app',\n windowsStoreAppUtils,\n `Uninstall-App ${appName}`,\n verbose,\n 'RemoveOldAppVersionFailure',\n );\n\n const script = glob.sync(\n path.join(appPackageFolder, 'Add-AppDevPackage.ps1'),\n )[0];\n\n await runPowerShellScriptFunction(\n 'Installing new version of the app',\n windowsStoreAppUtils,\n `Install-App \"${script}\" -Force`,\n verbose,\n 'InstallAppFailure',\n );\n } else {\n // If we have DeployAppRecipe.exe, use it (start in 16.8.4, earlier 16.8 versions have bugs)\n const appxRecipe = path.join(\n path.dirname(appxManifestPath),\n `${projectName}.build.appxrecipe`,\n );\n const ideFolder = `${buildTools.installationPath}\\\\Common7\\\\IDE`;\n const deployAppxRecipeExePath = `${ideFolder}\\\\DeployAppRecipe.exe`;\n if (\n vsVersion.gte(Version.fromString('16.8.30906.45')) &&\n fs.existsSync(deployAppxRecipeExePath)\n ) {\n await commandWithProgress(\n newSpinner('Deploying'),\n `Deploying ${appxRecipe}`,\n deployAppxRecipeExePath,\n [appxRecipe],\n verbose,\n 'DeployRecipeFailure',\n );\n } else {\n // Install the app package's dependencies before attempting to deploy.\n await runPowerShellScriptFunction(\n 'Installing dependent framework packages',\n windowsStoreAppUtils,\n `Install-AppDependencies ${appxManifestPath} ${appPackageFolder} ${options.arch}`,\n verbose,\n 'InstallAppDependenciesFailure',\n );\n await build.buildSolution(\n buildTools,\n slnFile,\n /* options.release ? 'Release' : */ 'Debug',\n options.arch,\n {DeployLayout: 'true'},\n verbose,\n 'deploy',\n options.buildLogDirectory,\n );\n }\n }\n\n const appFamilyName = execSync(\n `powershell -NoProfile -c $(Get-AppxPackage -Name ${appName}).PackageFamilyName`,\n )\n .toString()\n .trim();\n\n if (!appFamilyName) {\n throw new CodedError(\n 'AppDidNotDeploy',\n 'Fail to check the installed app, maybe developer mode is off on Windows',\n );\n }\n\n const loopbackText = 'Verifying loopbackExempt';\n const loopbackSpinner = newSpinner(loopbackText);\n\n await commandWithProgress(\n loopbackSpinner,\n loopbackText,\n 'CheckNetIsolation',\n `LoopbackExempt -a -n=${appFamilyName}`.split(' '),\n verbose,\n 'CheckNetIsolationFailure',\n );\n\n if (shouldLaunchApp(options)) {\n await runPowerShellScriptFunction(\n 'Starting the app',\n windowsStoreAppUtils,\n `Start-Locally ${appName} ${args}`,\n verbose,\n 'AppStartupFailure',\n );\n } else {\n newInfo('Skip the step to start the app');\n }\n}\n\nexport function startServerInNewWindow(\n options: RunWindowsOptions,\n verbose: boolean,\n): Promise<void> {\n return new Promise(resolve => {\n http\n .get('http://localhost:8081/status', res => {\n if (res.statusCode === 200) {\n newSuccess('React-Native Server already started');\n } else {\n newError('React-Native Server not responding');\n }\n resolve();\n })\n .on('error', () => {\n launchServer(options, verbose);\n resolve();\n });\n });\n}\n\nfunction launchServer(options: RunWindowsOptions, verbose: boolean) {\n newSuccess('Starting the React-Native Server');\n const opts: SpawnOptions = {\n cwd: options.root,\n detached: true,\n stdio: verbose ? 'inherit' : 'ignore',\n };\n\n spawn('cmd.exe', ['/C', 'start npx --no-install react-native start'], opts);\n}\n"]}
|