@react-native-windows/cli 0.0.0-canary.182 → 0.0.0-canary.184
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/lib-commonjs/codegen.js +13 -1
- package/lib-commonjs/codegen.js.map +1 -1
- package/lib-commonjs/generator-windows/index.js +5 -24
- package/lib-commonjs/generator-windows/index.js.map +1 -1
- package/lib-commonjs/runWindows/runWindowsOptions.js +2 -9
- package/lib-commonjs/runWindows/runWindowsOptions.js.map +1 -1
- package/lib-commonjs/runWindows/utils/telemetryHelpers.js +10 -2
- package/lib-commonjs/runWindows/utils/telemetryHelpers.js.map +1 -1
- package/package.json +3 -3
package/lib-commonjs/codegen.js
CHANGED
|
@@ -55,7 +55,18 @@ class CodeGenWindows {
|
|
|
55
55
|
cppStringType = pkgJson.codegenConfig.windows.cppStringType;
|
|
56
56
|
break;
|
|
57
57
|
default:
|
|
58
|
-
throw new telemetry_1.CodedError('InvalidCodegenConfig', `Value of ${chalk_1.default.bold('codegenConfig.windows.cppStringType')} package.json should be either 'std::string' or 'std::wstring'`);
|
|
58
|
+
throw new telemetry_1.CodedError('InvalidCodegenConfig', `Value of ${chalk_1.default.bold('codegenConfig.windows.cppStringType')} in package.json should be either 'std::string' or 'std::wstring'`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
let separateDataTypes = true;
|
|
62
|
+
if (pkgJson.codegenConfig.windows.separateDataTypes !== undefined) {
|
|
63
|
+
switch (pkgJson.codegenConfig.windows.separateDataTypes) {
|
|
64
|
+
case true:
|
|
65
|
+
case false:
|
|
66
|
+
separateDataTypes = pkgJson.codegenConfig.windows.separateDataTypes;
|
|
67
|
+
break;
|
|
68
|
+
default:
|
|
69
|
+
throw new telemetry_1.CodedError('InvalidCodegenConfig', `Value of ${chalk_1.default.bold('codegenConfig.windows.separateDataTypes')} in package.json should be either true or false`);
|
|
59
70
|
}
|
|
60
71
|
}
|
|
61
72
|
if (!pkgJson.codegenConfig.name) {
|
|
@@ -76,6 +87,7 @@ class CodeGenWindows {
|
|
|
76
87
|
`${jsRootPathRelative}${jsRootPathRelative ? '/' : ''}**/*Native*.[jt]s`,
|
|
77
88
|
],
|
|
78
89
|
cppStringType,
|
|
90
|
+
separateDataTypes,
|
|
79
91
|
libraryName: projectName,
|
|
80
92
|
methodOnly: false,
|
|
81
93
|
modulesCxx: generators.indexOf('modulesCxx') !== -1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.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 chalk from 'chalk';\nimport {performance} from 'perf_hooks';\n\nimport {\n newSpinner,\n setExitProcessWithError,\n} from './runWindows/utils/commandWithProgress';\n\nimport {\n Command,\n CommandOption,\n Config,\n} from '@react-native-community/cli-types';\nimport {Telemetry, CodedError} from '@react-native-windows/telemetry';\nimport {\n getDefaultOptions,\n startTelemetrySession,\n endTelemetrySession,\n} from './runWindows/utils/telemetryHelpers';\n\nimport {\n CodeGenOptions as RnwCodeGenOptions,\n CppStringTypes,\n runCodeGen,\n} from '@react-native-windows/codegen';\nimport {Ora} from 'ora';\n\nexport class CodeGenWindows {\n private changesNecessary: boolean;\n\n public areChangesNeeded() {\n return this.changesNecessary;\n }\n\n constructor(readonly root: string, readonly options: CodeGenOptions) {\n this.changesNecessary = false;\n }\n\n public async run(spinner: Ora) {\n const verbose = this.options.logging;\n\n verboseMessage('', verbose);\n\n verboseMessage('Loading codegenConfig from package.json');\n const pkgJson = require(path.join(this.root, 'package.json'));\n\n if (!pkgJson.codegenConfig) {\n spinner.info(\n `No ${chalk.bold(\n 'codegenConfig',\n )} specified in package.json - ${chalk.yellow(\n 'Skipping codegen-windows',\n )}`,\n );\n return;\n }\n\n const codegenConfigType = pkgJson.codegenConfig.type;\n if (codegenConfigType !== 'modules' && codegenConfigType !== 'all') {\n spinner.info(\n `${chalk.bold(\n 'codegenConfig.type',\n )} in package.json is not ${chalk.bold('modules')} or ${chalk.bold(\n 'all',\n )} - ${chalk.yellow('Skipping codegen-windows')}`,\n );\n return;\n }\n\n if (!pkgJson.codegenConfig.windows) {\n spinner.info(\n `No ${chalk.bold(\n 'codegenConfig.windows',\n )} specified in package.json - ${chalk.yellow(\n 'Skipping codegen-windows',\n )}`,\n );\n return;\n }\n\n if (!pkgJson.codegenConfig.windows.namespace) {\n throw new CodedError(\n 'InvalidCodegenConfig',\n `Missing ${chalk.bold(\n 'codegenConfig.windows.namespace',\n )} value in package.json`,\n );\n }\n\n let cppStringType: CppStringTypes = 'std::string';\n if (pkgJson.codegenConfig.windows.cppStringType) {\n switch (pkgJson.codegenConfig.windows.cppStringType) {\n case 'std::string':\n case 'std::wstring':\n cppStringType = pkgJson.codegenConfig.windows.cppStringType;\n break;\n default:\n throw new CodedError(\n 'InvalidCodegenConfig',\n `Value of ${chalk.bold(\n 'codegenConfig.windows.cppStringType',\n )} package.json should be either 'std::string' or 'std::wstring'`,\n );\n }\n }\n\n if (!pkgJson.codegenConfig.name) {\n throw new CodedError(\n 'InvalidCodegenConfig',\n `Missing ${chalk.bold('codegenConfig.name')} value in package.json`,\n );\n }\n\n const projectName = pkgJson.codegenConfig.name.replace(/[^a-zA-Z]/g, '');\n const projectNamespace = pkgJson.codegenConfig.windows.namespace;\n const jsRootDir = pkgJson.codegenConfig.jsSrcsDir\n ? path.join(this.root, pkgJson.codegenConfig.jsSrcsDir)\n : this.root;\n const codegenOutputDir =\n pkgJson.codegenConfig.windows.outputDirectory ?? 'codegen';\n\n const generators = pkgJson.codegenConfig.windows.generators ?? [\n 'modulesWindows',\n ];\n\n const jsRootPathRelative = path.relative(process.cwd(), jsRootDir);\n const options: RnwCodeGenOptions = {\n files: [\n `${jsRootPathRelative}${\n jsRootPathRelative ? '/' : ''\n }**/*Native*.[jt]s`,\n ],\n cppStringType,\n libraryName: projectName,\n methodOnly: false,\n modulesCxx: generators.indexOf('modulesCxx') !== -1,\n modulesTypeScriptTypes:\n generators.indexOf('modulesTypeScriptTypes') !== -1,\n modulesWindows: generators.indexOf('modulesWindows') !== -1,\n namespace: projectNamespace,\n outputDirectory: path.join(this.root, codegenOutputDir),\n test: !!this.options.check,\n };\n\n verboseMessage(\n `Run codegen with options: \\n${JSON.stringify(options, null, 2)}`,\n verbose,\n );\n\n this.changesNecessary = runCodeGen(options);\n\n spinner.succeed();\n }\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 * Sanitizes the given option for telemetry.\n * @param key The key of the option.\n * @param value The unsanitized value of the option.\n * @returns The sanitized value of the option.\n */\nfunction optionSanitizer(key: keyof CodeGenOptions, value: any): any {\n // Do not add a default case here.\n // Strings risking PII should just return true if present, false otherwise.\n // All others should return the value (or false if undefined).\n switch (key) {\n case 'logging':\n case 'check':\n case 'telemetry':\n return value === undefined ? false : value; // Return value\n }\n}\n\n/**\n * Get the extra props to add to the `codegen-windows` telemetry event.\n * @returns The extra props.\n */\nasync function getExtraProps(): Promise<Record<string, any>> {\n const extraProps: Record<string, any> = {};\n return extraProps;\n}\n\n/**\n * The function run when calling `react-native codegen-windows`.\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 codegenWindows(\n args: string[],\n config: Config,\n options: CodeGenOptions,\n) {\n await startTelemetrySession(\n 'codegen-windows',\n config,\n options,\n getDefaultOptions(config, codegenOptions),\n optionSanitizer,\n );\n\n let codegenWindowsError: Error | undefined;\n try {\n await codegenWindowsInternal(args, config, options);\n } catch (ex) {\n codegenWindowsError =\n ex instanceof Error ? (ex as Error) : new Error(String(ex));\n Telemetry.trackException(codegenWindowsError);\n }\n\n await endTelemetrySession(codegenWindowsError, getExtraProps);\n setExitProcessWithError(options.logging, codegenWindowsError);\n}\n\n/**\n * Performs codegen 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 */\nexport async function codegenWindowsInternal(\n args: string[],\n config: Config,\n options: CodeGenOptions,\n) {\n const startTime = performance.now();\n const spinner = newSpinner(\n options.check\n ? 'Checking codegen-windows files...'\n : 'Running codegen-windows...',\n );\n try {\n const codegen = new CodeGenWindows(config.root, options);\n await codegen.run(spinner);\n const endTime = performance.now();\n\n if (!codegen.areChangesNeeded()) {\n console.log(\n `${chalk.green(\n 'Success:',\n )} No codegen-windows changes necessary. (${Math.round(\n endTime - startTime,\n )}ms)`,\n );\n } else if (options.check) {\n const codegenCommand = 'npx react-native codegen-windows';\n console.log(\n `${chalk.yellow(\n 'Warning:',\n )} Codegen-windows changes were necessary but ${chalk.bold(\n '--check',\n )} specified. Run '${chalk.bold(\n `${codegenCommand}`,\n )}' to apply the changes. (${Math.round(endTime - startTime)}ms)`,\n );\n throw new CodedError(\n 'NeedCodegen',\n `Codegen-windows changes were necessary but --check was specified. Run '${codegenCommand}' to apply the changes`,\n );\n } else {\n console.log(\n `${chalk.green(\n 'Success:',\n )} Codegen-windows 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 as any).toString()}. (${Math.round(\n endTime - startTime,\n )}ms)`,\n );\n throw e;\n }\n}\n\nexport interface CodeGenOptions {\n logging?: boolean;\n check?: boolean;\n telemetry?: boolean;\n}\n\nexport const codegenOptions: CommandOption[] = [\n {\n name: '--logging',\n description: 'Verbose output logging',\n },\n {\n name: '--check',\n description: 'Only check whether any codegen files need to change',\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\n/**\n * Performs codegen for RNW native modules.\n */\nexport const codegenCommand: Command = {\n name: 'codegen-windows',\n description: 'Runs Windows specific codegen',\n func: codegenWindows,\n options: codegenOptions,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.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 chalk from 'chalk';\nimport {performance} from 'perf_hooks';\n\nimport {\n newSpinner,\n setExitProcessWithError,\n} from './runWindows/utils/commandWithProgress';\n\nimport {\n Command,\n CommandOption,\n Config,\n} from '@react-native-community/cli-types';\nimport {Telemetry, CodedError} from '@react-native-windows/telemetry';\nimport {\n getDefaultOptions,\n startTelemetrySession,\n endTelemetrySession,\n} from './runWindows/utils/telemetryHelpers';\n\nimport {\n CodeGenOptions as RnwCodeGenOptions,\n CppStringTypes,\n runCodeGen,\n} from '@react-native-windows/codegen';\nimport {Ora} from 'ora';\n\nexport class CodeGenWindows {\n private changesNecessary: boolean;\n\n public areChangesNeeded() {\n return this.changesNecessary;\n }\n\n constructor(readonly root: string, readonly options: CodeGenOptions) {\n this.changesNecessary = false;\n }\n\n public async run(spinner: Ora) {\n const verbose = this.options.logging;\n\n verboseMessage('', verbose);\n\n verboseMessage('Loading codegenConfig from package.json');\n const pkgJson = require(path.join(this.root, 'package.json'));\n\n if (!pkgJson.codegenConfig) {\n spinner.info(\n `No ${chalk.bold(\n 'codegenConfig',\n )} specified in package.json - ${chalk.yellow(\n 'Skipping codegen-windows',\n )}`,\n );\n return;\n }\n\n const codegenConfigType = pkgJson.codegenConfig.type;\n if (codegenConfigType !== 'modules' && codegenConfigType !== 'all') {\n spinner.info(\n `${chalk.bold(\n 'codegenConfig.type',\n )} in package.json is not ${chalk.bold('modules')} or ${chalk.bold(\n 'all',\n )} - ${chalk.yellow('Skipping codegen-windows')}`,\n );\n return;\n }\n\n if (!pkgJson.codegenConfig.windows) {\n spinner.info(\n `No ${chalk.bold(\n 'codegenConfig.windows',\n )} specified in package.json - ${chalk.yellow(\n 'Skipping codegen-windows',\n )}`,\n );\n return;\n }\n\n if (!pkgJson.codegenConfig.windows.namespace) {\n throw new CodedError(\n 'InvalidCodegenConfig',\n `Missing ${chalk.bold(\n 'codegenConfig.windows.namespace',\n )} value in package.json`,\n );\n }\n\n let cppStringType: CppStringTypes = 'std::string';\n if (pkgJson.codegenConfig.windows.cppStringType) {\n switch (pkgJson.codegenConfig.windows.cppStringType) {\n case 'std::string':\n case 'std::wstring':\n cppStringType = pkgJson.codegenConfig.windows.cppStringType;\n break;\n default:\n throw new CodedError(\n 'InvalidCodegenConfig',\n `Value of ${chalk.bold(\n 'codegenConfig.windows.cppStringType',\n )} in package.json should be either 'std::string' or 'std::wstring'`,\n );\n }\n }\n\n let separateDataTypes = true;\n if (pkgJson.codegenConfig.windows.separateDataTypes !== undefined) {\n switch (pkgJson.codegenConfig.windows.separateDataTypes) {\n case true:\n case false:\n separateDataTypes = pkgJson.codegenConfig.windows.separateDataTypes;\n break;\n default:\n throw new CodedError(\n 'InvalidCodegenConfig',\n `Value of ${chalk.bold(\n 'codegenConfig.windows.separateDataTypes',\n )} in package.json should be either true or false`,\n );\n }\n }\n\n if (!pkgJson.codegenConfig.name) {\n throw new CodedError(\n 'InvalidCodegenConfig',\n `Missing ${chalk.bold('codegenConfig.name')} value in package.json`,\n );\n }\n\n const projectName = pkgJson.codegenConfig.name.replace(/[^a-zA-Z]/g, '');\n const projectNamespace = pkgJson.codegenConfig.windows.namespace;\n const jsRootDir = pkgJson.codegenConfig.jsSrcsDir\n ? path.join(this.root, pkgJson.codegenConfig.jsSrcsDir)\n : this.root;\n const codegenOutputDir =\n pkgJson.codegenConfig.windows.outputDirectory ?? 'codegen';\n\n const generators = pkgJson.codegenConfig.windows.generators ?? [\n 'modulesWindows',\n ];\n\n const jsRootPathRelative = path.relative(process.cwd(), jsRootDir);\n const options: RnwCodeGenOptions = {\n files: [\n `${jsRootPathRelative}${\n jsRootPathRelative ? '/' : ''\n }**/*Native*.[jt]s`,\n ],\n cppStringType,\n separateDataTypes,\n libraryName: projectName,\n methodOnly: false,\n modulesCxx: generators.indexOf('modulesCxx') !== -1,\n modulesTypeScriptTypes:\n generators.indexOf('modulesTypeScriptTypes') !== -1,\n modulesWindows: generators.indexOf('modulesWindows') !== -1,\n namespace: projectNamespace,\n outputDirectory: path.join(this.root, codegenOutputDir),\n test: !!this.options.check,\n };\n\n verboseMessage(\n `Run codegen with options: \\n${JSON.stringify(options, null, 2)}`,\n verbose,\n );\n\n this.changesNecessary = runCodeGen(options);\n\n spinner.succeed();\n }\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 * Sanitizes the given option for telemetry.\n * @param key The key of the option.\n * @param value The unsanitized value of the option.\n * @returns The sanitized value of the option.\n */\nfunction optionSanitizer(key: keyof CodeGenOptions, value: any): any {\n // Do not add a default case here.\n // Strings risking PII should just return true if present, false otherwise.\n // All others should return the value (or false if undefined).\n switch (key) {\n case 'logging':\n case 'check':\n case 'telemetry':\n return value === undefined ? false : value; // Return value\n }\n}\n\n/**\n * Get the extra props to add to the `codegen-windows` telemetry event.\n * @returns The extra props.\n */\nasync function getExtraProps(): Promise<Record<string, any>> {\n const extraProps: Record<string, any> = {};\n return extraProps;\n}\n\n/**\n * The function run when calling `react-native codegen-windows`.\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 codegenWindows(\n args: string[],\n config: Config,\n options: CodeGenOptions,\n) {\n await startTelemetrySession(\n 'codegen-windows',\n config,\n options,\n getDefaultOptions(config, codegenOptions),\n optionSanitizer,\n );\n\n let codegenWindowsError: Error | undefined;\n try {\n await codegenWindowsInternal(args, config, options);\n } catch (ex) {\n codegenWindowsError =\n ex instanceof Error ? (ex as Error) : new Error(String(ex));\n Telemetry.trackException(codegenWindowsError);\n }\n\n await endTelemetrySession(codegenWindowsError, getExtraProps);\n setExitProcessWithError(options.logging, codegenWindowsError);\n}\n\n/**\n * Performs codegen 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 */\nexport async function codegenWindowsInternal(\n args: string[],\n config: Config,\n options: CodeGenOptions,\n) {\n const startTime = performance.now();\n const spinner = newSpinner(\n options.check\n ? 'Checking codegen-windows files...'\n : 'Running codegen-windows...',\n );\n try {\n const codegen = new CodeGenWindows(config.root, options);\n await codegen.run(spinner);\n const endTime = performance.now();\n\n if (!codegen.areChangesNeeded()) {\n console.log(\n `${chalk.green(\n 'Success:',\n )} No codegen-windows changes necessary. (${Math.round(\n endTime - startTime,\n )}ms)`,\n );\n } else if (options.check) {\n const codegenCommand = 'npx react-native codegen-windows';\n console.log(\n `${chalk.yellow(\n 'Warning:',\n )} Codegen-windows changes were necessary but ${chalk.bold(\n '--check',\n )} specified. Run '${chalk.bold(\n `${codegenCommand}`,\n )}' to apply the changes. (${Math.round(endTime - startTime)}ms)`,\n );\n throw new CodedError(\n 'NeedCodegen',\n `Codegen-windows changes were necessary but --check was specified. Run '${codegenCommand}' to apply the changes`,\n );\n } else {\n console.log(\n `${chalk.green(\n 'Success:',\n )} Codegen-windows 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 as any).toString()}. (${Math.round(\n endTime - startTime,\n )}ms)`,\n );\n throw e;\n }\n}\n\nexport interface CodeGenOptions {\n logging?: boolean;\n check?: boolean;\n telemetry?: boolean;\n}\n\nexport const codegenOptions: CommandOption[] = [\n {\n name: '--logging',\n description: 'Verbose output logging',\n },\n {\n name: '--check',\n description: 'Only check whether any codegen files need to change',\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\n/**\n * Performs codegen for RNW native modules.\n */\nexport const codegenCommand: Command = {\n name: 'codegen-windows',\n description: 'Runs Windows specific codegen',\n func: codegenWindows,\n options: codegenOptions,\n};\n"]}
|
|
@@ -73,23 +73,11 @@ async function copyProjectTemplateAndReplace(srcRootPath, destPath, newProjectNa
|
|
|
73
73
|
if (options.experimentalNuGetDependency) {
|
|
74
74
|
console.log('Using experimental NuGet dependency.');
|
|
75
75
|
}
|
|
76
|
-
let realProjectType = projectType;
|
|
77
76
|
if (options.useWinUI3) {
|
|
78
|
-
|
|
79
|
-
if (projectType === 'lib') {
|
|
80
|
-
throw new telemetry_1.CodedError('IncompatibleOptions', 'WinUI 3 project template only supports apps at the moment', {
|
|
81
|
-
detail: 'useWinUI3 and lib',
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
else if (language !== 'cs') {
|
|
85
|
-
throw new telemetry_1.CodedError('IncompatibleOptions', 'WinUI 3 project template only support C# at the moment', {
|
|
86
|
-
detail: 'useWinUI3 and cpp',
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
realProjectType += '-WinAppSDK';
|
|
77
|
+
throw new telemetry_1.CodedError('IncompatibleOptions', 'Experimental WinUI 3 project has been deprecated.');
|
|
90
78
|
}
|
|
91
79
|
const projDir = 'proj';
|
|
92
|
-
const srcPath = path_1.default.join(srcRootPath, `${language}-${
|
|
80
|
+
const srcPath = path_1.default.join(srcRootPath, `${language}-${projectType}`);
|
|
93
81
|
const sharedPath = path_1.default.join(srcRootPath, `shared-${projectType}`);
|
|
94
82
|
const projectGuid = existingProjectGuid || uuid_1.default.v4();
|
|
95
83
|
const rnwVersion = require(resolveRnwPath('package.json')).version;
|
|
@@ -253,16 +241,9 @@ async function copyProjectTemplateAndReplace(srcRootPath, destPath, newProjectNa
|
|
|
253
241
|
if (fs_1.default.existsSync(path_1.default.join(sharedPath, 'assets'))) {
|
|
254
242
|
await (0, generator_common_1.copyAndReplaceAll)(path_1.default.join(sharedPath, 'assets'), destPath, path_1.default.join(windowsDir, newProjectName, 'Assets'), templateVars, options.overwrite);
|
|
255
243
|
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
await (0, generator_common_1.copyAndReplaceAll)(path_1.default.join(sharedPath, 'src'), destPath, path_1.default.join(windowsDir, newProjectName), templateVars, options.overwrite);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
else {
|
|
263
|
-
if (fs_1.default.existsSync(path_1.default.join(srcPath, 'MyApp'))) {
|
|
264
|
-
await (0, generator_common_1.copyAndReplaceAll)(path_1.default.join(srcPath, 'MyApp'), destPath, path_1.default.join(windowsDir, newProjectName), templateVars, options.overwrite);
|
|
265
|
-
}
|
|
244
|
+
// shared src
|
|
245
|
+
if (fs_1.default.existsSync(path_1.default.join(sharedPath, 'src'))) {
|
|
246
|
+
await (0, generator_common_1.copyAndReplaceAll)(path_1.default.join(sharedPath, 'src'), destPath, path_1.default.join(windowsDir, newProjectName), templateVars, options.overwrite);
|
|
266
247
|
}
|
|
267
248
|
// src
|
|
268
249
|
if (fs_1.default.existsSync(path_1.default.join(srcPath, 'src'))) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator-windows/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport chalk from 'chalk';\nimport path from 'path';\nimport username from 'username';\nimport uuid from 'uuid';\nimport childProcess from 'child_process';\nimport fs from '@react-native-windows/fs';\nimport semver from 'semver';\nimport _ from 'lodash';\nimport findUp from 'find-up';\nimport {readProjectFile, findPropertyValue} from '../config/configUtils';\n\nimport {\n createDir,\n copyAndReplaceAll,\n copyAndReplaceWithChangedCallback,\n} from '../generator-common';\nimport {GenerateOptions} from '..';\nimport {\n CodedError,\n getVersionOfNpmPackage,\n} from '@react-native-windows/telemetry';\nimport {\n findPackage,\n WritableNpmPackage,\n} from '@react-native-windows/package-utils';\n\nconst windowsDir = 'windows';\nconst bundleDir = 'Bundle';\n\n/**\n * This represents the data to insert nuget packages\n */\ninterface NugetPackage {\n id: string;\n version: string;\n privateAssets: boolean;\n}\n\nfunction pascalCase(str: string) {\n const camelCase = _.camelCase(str);\n return camelCase[0].toUpperCase() + camelCase.substr(1);\n}\n\nfunction resolveRnwPath(subpath: string): string {\n return require.resolve(path.join('react-native-windows', subpath), {\n paths: [process.cwd()],\n });\n}\n\n// Existing high cyclomatic complexity\n// eslint-disable-next-line complexity\nexport async function copyProjectTemplateAndReplace(\n srcRootPath: string,\n destPath: string,\n newProjectName: string,\n namespace: string,\n options: GenerateOptions,\n) {\n if (!srcRootPath) {\n throw new CodedError(\n 'CopyProjectTemplateNoSourcePath',\n 'Need a path to copy from',\n );\n }\n\n if (!destPath) {\n throw new CodedError(\n 'CopyProjectTemplateNoDestPath',\n 'Need a path to copy to',\n );\n }\n\n if (!newProjectName) {\n throw new CodedError(\n 'CopyProjectTemplateNoProjectName',\n 'Need a project name',\n );\n }\n\n const projectType = options.projectType;\n const language = options.language;\n\n // React-native init only allows alphanumerics in project names, but other\n // new project tools (like create-react-native-module) are less strict.\n if (projectType === 'lib') {\n newProjectName = pascalCase(newProjectName);\n }\n\n // Similar to the above, but we want to retain namespace separators\n if (projectType === 'lib') {\n namespace = namespace.split(/[.:]+/).map(pascalCase).join('.');\n }\n\n // Checking if we're overwriting an existing project and re-uses their projectGUID\n const existingProjectPath = path.join(\n destPath,\n windowsDir,\n newProjectName,\n newProjectName + (language === 'cs' ? '.csproj' : '.vcxproj'),\n );\n let existingProjectGuid: string | undefined;\n if (fs.existsSync(existingProjectPath)) {\n console.log('Found existing project, extracting ProjectGuid.');\n existingProjectGuid = findPropertyValue(\n readProjectFile(existingProjectPath),\n 'ProjectGuid',\n existingProjectPath,\n ).replace(/[{}]/g, '');\n }\n\n createDir(path.join(destPath, windowsDir));\n createDir(path.join(destPath, windowsDir, newProjectName));\n\n if (projectType === 'app') {\n createDir(path.join(destPath, windowsDir, newProjectName, bundleDir));\n createDir(path.join(destPath, windowsDir, newProjectName, 'BundleBuilder'));\n }\n\n const namespaceCpp = toCppNamespace(namespace);\n if (options.experimentalNuGetDependency) {\n console.log('Using experimental NuGet dependency.');\n }\n\n let realProjectType = projectType;\n\n if (options.useWinUI3) {\n console.log('Using experimental WinUI3 dependency.');\n if (projectType === 'lib') {\n throw new CodedError(\n 'IncompatibleOptions',\n 'WinUI 3 project template only supports apps at the moment',\n {\n detail: 'useWinUI3 and lib',\n },\n );\n } else if (language !== 'cs') {\n throw new CodedError(\n 'IncompatibleOptions',\n 'WinUI 3 project template only support C# at the moment',\n {\n detail: 'useWinUI3 and cpp',\n },\n );\n }\n\n realProjectType += '-WinAppSDK';\n }\n\n const projDir = 'proj';\n const srcPath = path.join(srcRootPath, `${language}-${realProjectType}`);\n const sharedPath = path.join(srcRootPath, `shared-${projectType}`);\n const projectGuid = existingProjectGuid || uuid.v4();\n const rnwVersion = require(resolveRnwPath('package.json')).version;\n const nugetVersion = options.nuGetTestVersion || rnwVersion;\n const packageGuid = uuid.v4();\n const currentUser = username.sync()!; // Gets the current username depending on the platform.\n\n let mainComponentName = newProjectName;\n const appJsonPath = await findUp('app.json', {cwd: destPath});\n if (appJsonPath) {\n const appJson = await fs.readJsonFile<{name: string}>(appJsonPath);\n mainComponentName = appJson.name;\n }\n\n // We should prefer putting new, necessary PackageReference dependencies into the appropriate\n // external property sheets, but this is here if we \"must\" inject the dependency into the project file\n const csNugetPackages: NugetPackage[] = [];\n const cppNugetPackages: NugetPackage[] = [];\n\n const templateVars: Record<string, any> = {\n useMustache: true,\n regExpPatternsToRemove: [],\n\n name: newProjectName,\n namespace: namespace,\n namespaceCpp: namespaceCpp,\n languageIsCpp: language === 'cpp',\n\n rnwVersion: await getVersionOfNpmPackage('react-native-windows'),\n\n mainComponentName: mainComponentName,\n\n // Visual Studio is very picky about the casing of the guids for projects, project references and the solution\n // https://www.bing.com/search?q=visual+studio+project+guid+casing&cvid=311a5ad7f9fc41089507b24600d23ee7&FORM=ANAB01&PC=U531\n // we therefore have to precariously use the right casing in the right place or risk building in VS breaking.\n projectGuidLower: `{${projectGuid.toLowerCase()}}`,\n projectGuidUpper: `{${projectGuid.toUpperCase()}}`,\n\n // packaging and signing variables:\n packageGuid: packageGuid,\n currentUser: currentUser,\n\n useExperimentalNuget: options.experimentalNuGetDependency,\n nuGetTestFeed: options.nuGetTestFeed,\n nuGetADOFeed: nugetVersion.startsWith('0.0.0-'),\n\n // cpp template variables\n useWinUI3: options.useWinUI3,\n useHermes: options.useHermes,\n cppNugetPackages: cppNugetPackages,\n\n // cs template variables\n csNugetPackages: csNugetPackages,\n\n // autolinking template variables\n autolinkPropertiesForProps: '',\n autolinkProjectReferencesForTargets: '',\n autolinkCsUsingNamespaces: '',\n autolinkCsReactPackageProviders: '',\n autolinkCppIncludes: '',\n autolinkCppPackageProviders:\n '\\n UNREFERENCED_PARAMETER(packageProviders);', // CODESYNC: vnext\\local-cli\\runWindows\\utils\\autolink.js\n };\n\n const commonMappings =\n projectType === 'app'\n ? [\n // app common mappings\n {\n from: path.join(\n srcRootPath,\n options.useDevMode\n ? 'metro.devMode.config.js'\n : 'metro.config.js',\n ),\n to: 'metro.config.js',\n },\n {\n from: path.join(srcRootPath, '_gitignore'),\n to: path.join(windowsDir, '.gitignore'),\n },\n {\n from: path.join(srcRootPath, 'b_gitignore'),\n to: path.join(windowsDir, newProjectName, '.gitignore'),\n },\n {\n from: path.join(srcRootPath, 'index.windows.bundle'),\n to: path.join(\n windowsDir,\n newProjectName,\n bundleDir,\n 'index.windows.bundle',\n ),\n },\n {\n from: path.join(srcPath, projDir, 'MyApp.sln'),\n to: path.join(windowsDir, newProjectName + '.sln'),\n },\n ]\n : [\n // lib common mappings\n {\n from: path.join(srcRootPath, '_gitignore'),\n to: path.join(windowsDir, '.gitignore'),\n },\n {\n from: path.join(srcPath, projDir, 'MyLib.sln'),\n to: path.join(windowsDir, newProjectName + '.sln'),\n },\n ];\n\n for (const mapping of commonMappings) {\n await copyAndReplaceWithChangedCallback(\n mapping.from,\n destPath,\n mapping.to,\n templateVars,\n options.overwrite,\n );\n }\n\n if (language === 'cs') {\n const csMappings =\n projectType === 'app'\n ? [\n // cs app mappings\n {\n from: path.join(srcPath, projDir, 'MyApp.csproj'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.csproj',\n ),\n },\n ]\n : [\n // cs lib mappings\n {\n from: path.join(srcPath, projDir, 'MyLib.csproj'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.csproj',\n ),\n },\n ];\n\n for (const mapping of csMappings) {\n await copyAndReplaceWithChangedCallback(\n mapping.from,\n destPath,\n mapping.to,\n templateVars,\n options.overwrite,\n );\n }\n } else {\n const cppMappings =\n projectType === 'app'\n ? [\n // cpp app mappings\n {\n from: path.join(srcPath, projDir, 'MyApp.vcxproj'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.vcxproj',\n ),\n },\n {\n from: path.join(srcPath, projDir, 'MyApp.vcxproj.filters'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.vcxproj.filters',\n ),\n },\n ]\n : [\n // cpp lib mappings\n {\n from: path.join(srcPath, projDir, 'MyLib.vcxproj'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.vcxproj',\n ),\n },\n {\n from: path.join(srcPath, projDir, 'MyLib.vcxproj.filters'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.vcxproj.filters',\n ),\n },\n {\n from: path.join(srcPath, projDir, 'MyLib.def'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.def',\n ),\n },\n ];\n\n for (const mapping of cppMappings) {\n await copyAndReplaceWithChangedCallback(\n mapping.from,\n destPath,\n mapping.to,\n templateVars,\n options.overwrite,\n );\n }\n }\n\n // shared proj\n if (fs.existsSync(path.join(sharedPath, projDir))) {\n const sharedProjMappings = [];\n\n sharedProjMappings.push({\n from: path.join(sharedPath, projDir, 'NuGet_Config'),\n to: path.join(windowsDir, 'NuGet.Config'),\n });\n\n if (\n fs.existsSync(\n path.join(sharedPath, projDir, 'ExperimentalFeatures.props'),\n )\n ) {\n sharedProjMappings.push({\n from: path.join(sharedPath, projDir, 'ExperimentalFeatures.props'),\n to: path.join(windowsDir, 'ExperimentalFeatures.props'),\n });\n }\n\n for (const mapping of sharedProjMappings) {\n await copyAndReplaceWithChangedCallback(\n mapping.from,\n destPath,\n mapping.to,\n templateVars,\n options.overwrite,\n );\n }\n }\n\n // shared assets\n if (fs.existsSync(path.join(sharedPath, 'assets'))) {\n await copyAndReplaceAll(\n path.join(sharedPath, 'assets'),\n destPath,\n path.join(windowsDir, newProjectName, 'Assets'),\n templateVars,\n options.overwrite,\n );\n }\n\n if (!options.useWinUI3) {\n // shared src\n if (fs.existsSync(path.join(sharedPath, 'src'))) {\n await copyAndReplaceAll(\n path.join(sharedPath, 'src'),\n destPath,\n path.join(windowsDir, newProjectName),\n templateVars,\n options.overwrite,\n );\n }\n } else {\n if (fs.existsSync(path.join(srcPath, 'MyApp'))) {\n await copyAndReplaceAll(\n path.join(srcPath, 'MyApp'),\n destPath,\n path.join(windowsDir, newProjectName),\n templateVars,\n options.overwrite,\n );\n }\n }\n\n // src\n if (fs.existsSync(path.join(srcPath, 'src'))) {\n await copyAndReplaceAll(\n path.join(srcPath, 'src'),\n destPath,\n path.join(windowsDir, newProjectName),\n templateVars,\n options.overwrite,\n );\n }\n\n if (projectType === 'app') {\n console.log(chalk.white.bold('To run your app on UWP:'));\n console.log(chalk.white(' npx react-native run-windows'));\n }\n}\n\nfunction toCppNamespace(namespace: string) {\n return namespace.replace(/\\./g, '::');\n}\n\nexport async function installScriptsAndDependencies(options: {\n verbose: boolean;\n}) {\n const projectPackage = await WritableNpmPackage.fromPath(process.cwd());\n if (!projectPackage) {\n throw new Error(\n `The current directory '${process.cwd()}' is not the root of an npm package`,\n );\n }\n\n await projectPackage.mergeProps({\n scripts: {windows: 'react-native run-windows'},\n });\n\n const rnwPackage = await findPackage('react-native-windows');\n if (!rnwPackage) {\n throw new Error('Could not locate the package for react-native-windows');\n }\n\n const rnPackage = await findPackage('react-native');\n if (!rnPackage) {\n throw new Error('Could not locate the package for react-native');\n }\n\n // We add an exclusionList from metro config. This will be hoisted, but add\n // an explicit dep because we require it directly.\n const cliPackage = await findPackage('@react-native-community/cli', {\n searchPath: rnPackage.path,\n });\n const metroConfigPackage = await findPackage('metro-config', {\n searchPath: cliPackage?.path || rnPackage.path,\n });\n\n if (metroConfigPackage) {\n await projectPackage.mergeProps({\n devDependencies: {\n 'metro-config': `^${metroConfigPackage.json.version}`,\n },\n });\n }\n\n const rnPeerDependency = rnwPackage.json.peerDependencies['react-native'];\n\n if (\n !semver.satisfies(rnPackage.json.version, rnPeerDependency) &&\n projectPackage.json.dependencies?.['react-native']\n ) {\n console.log(\n chalk.green('Installing a compatible version of react-native:'),\n );\n console.log(chalk.white(` ${rnPeerDependency}`));\n\n // Patch package.json to have proper react-native version and install\n await projectPackage.mergeProps({\n dependencies: {'react-native': rnPeerDependency},\n });\n\n // Install dependencies using correct package manager\n const isYarn = fs.existsSync(path.join(process.cwd(), 'yarn.lock'));\n childProcess.execSync(\n isYarn ? 'yarn' : 'npm i',\n options.verbose ? {stdio: 'inherit'} : {},\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator-windows/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport chalk from 'chalk';\nimport path from 'path';\nimport username from 'username';\nimport uuid from 'uuid';\nimport childProcess from 'child_process';\nimport fs from '@react-native-windows/fs';\nimport semver from 'semver';\nimport _ from 'lodash';\nimport findUp from 'find-up';\nimport {readProjectFile, findPropertyValue} from '../config/configUtils';\n\nimport {\n createDir,\n copyAndReplaceAll,\n copyAndReplaceWithChangedCallback,\n} from '../generator-common';\nimport {GenerateOptions} from '..';\nimport {\n CodedError,\n getVersionOfNpmPackage,\n} from '@react-native-windows/telemetry';\nimport {\n findPackage,\n WritableNpmPackage,\n} from '@react-native-windows/package-utils';\n\nconst windowsDir = 'windows';\nconst bundleDir = 'Bundle';\n\n/**\n * This represents the data to insert nuget packages\n */\ninterface NugetPackage {\n id: string;\n version: string;\n privateAssets: boolean;\n}\n\nfunction pascalCase(str: string) {\n const camelCase = _.camelCase(str);\n return camelCase[0].toUpperCase() + camelCase.substr(1);\n}\n\nfunction resolveRnwPath(subpath: string): string {\n return require.resolve(path.join('react-native-windows', subpath), {\n paths: [process.cwd()],\n });\n}\n\n// Existing high cyclomatic complexity\n// eslint-disable-next-line complexity\nexport async function copyProjectTemplateAndReplace(\n srcRootPath: string,\n destPath: string,\n newProjectName: string,\n namespace: string,\n options: GenerateOptions,\n) {\n if (!srcRootPath) {\n throw new CodedError(\n 'CopyProjectTemplateNoSourcePath',\n 'Need a path to copy from',\n );\n }\n\n if (!destPath) {\n throw new CodedError(\n 'CopyProjectTemplateNoDestPath',\n 'Need a path to copy to',\n );\n }\n\n if (!newProjectName) {\n throw new CodedError(\n 'CopyProjectTemplateNoProjectName',\n 'Need a project name',\n );\n }\n\n const projectType = options.projectType;\n const language = options.language;\n\n // React-native init only allows alphanumerics in project names, but other\n // new project tools (like create-react-native-module) are less strict.\n if (projectType === 'lib') {\n newProjectName = pascalCase(newProjectName);\n }\n\n // Similar to the above, but we want to retain namespace separators\n if (projectType === 'lib') {\n namespace = namespace.split(/[.:]+/).map(pascalCase).join('.');\n }\n\n // Checking if we're overwriting an existing project and re-uses their projectGUID\n const existingProjectPath = path.join(\n destPath,\n windowsDir,\n newProjectName,\n newProjectName + (language === 'cs' ? '.csproj' : '.vcxproj'),\n );\n let existingProjectGuid: string | undefined;\n if (fs.existsSync(existingProjectPath)) {\n console.log('Found existing project, extracting ProjectGuid.');\n existingProjectGuid = findPropertyValue(\n readProjectFile(existingProjectPath),\n 'ProjectGuid',\n existingProjectPath,\n ).replace(/[{}]/g, '');\n }\n\n createDir(path.join(destPath, windowsDir));\n createDir(path.join(destPath, windowsDir, newProjectName));\n\n if (projectType === 'app') {\n createDir(path.join(destPath, windowsDir, newProjectName, bundleDir));\n createDir(path.join(destPath, windowsDir, newProjectName, 'BundleBuilder'));\n }\n\n const namespaceCpp = toCppNamespace(namespace);\n if (options.experimentalNuGetDependency) {\n console.log('Using experimental NuGet dependency.');\n }\n\n if (options.useWinUI3) {\n throw new CodedError(\n 'IncompatibleOptions',\n 'Experimental WinUI 3 project has been deprecated.',\n );\n }\n\n const projDir = 'proj';\n const srcPath = path.join(srcRootPath, `${language}-${projectType}`);\n const sharedPath = path.join(srcRootPath, `shared-${projectType}`);\n const projectGuid = existingProjectGuid || uuid.v4();\n const rnwVersion = require(resolveRnwPath('package.json')).version;\n const nugetVersion = options.nuGetTestVersion || rnwVersion;\n const packageGuid = uuid.v4();\n const currentUser = username.sync()!; // Gets the current username depending on the platform.\n\n let mainComponentName = newProjectName;\n const appJsonPath = await findUp('app.json', {cwd: destPath});\n if (appJsonPath) {\n const appJson = await fs.readJsonFile<{name: string}>(appJsonPath);\n mainComponentName = appJson.name;\n }\n\n // We should prefer putting new, necessary PackageReference dependencies into the appropriate\n // external property sheets, but this is here if we \"must\" inject the dependency into the project file\n const csNugetPackages: NugetPackage[] = [];\n const cppNugetPackages: NugetPackage[] = [];\n\n const templateVars: Record<string, any> = {\n useMustache: true,\n regExpPatternsToRemove: [],\n\n name: newProjectName,\n namespace: namespace,\n namespaceCpp: namespaceCpp,\n languageIsCpp: language === 'cpp',\n\n rnwVersion: await getVersionOfNpmPackage('react-native-windows'),\n\n mainComponentName: mainComponentName,\n\n // Visual Studio is very picky about the casing of the guids for projects, project references and the solution\n // https://www.bing.com/search?q=visual+studio+project+guid+casing&cvid=311a5ad7f9fc41089507b24600d23ee7&FORM=ANAB01&PC=U531\n // we therefore have to precariously use the right casing in the right place or risk building in VS breaking.\n projectGuidLower: `{${projectGuid.toLowerCase()}}`,\n projectGuidUpper: `{${projectGuid.toUpperCase()}}`,\n\n // packaging and signing variables:\n packageGuid: packageGuid,\n currentUser: currentUser,\n\n useExperimentalNuget: options.experimentalNuGetDependency,\n nuGetTestFeed: options.nuGetTestFeed,\n nuGetADOFeed: nugetVersion.startsWith('0.0.0-'),\n\n // cpp template variables\n useWinUI3: options.useWinUI3,\n useHermes: options.useHermes,\n cppNugetPackages: cppNugetPackages,\n\n // cs template variables\n csNugetPackages: csNugetPackages,\n\n // autolinking template variables\n autolinkPropertiesForProps: '',\n autolinkProjectReferencesForTargets: '',\n autolinkCsUsingNamespaces: '',\n autolinkCsReactPackageProviders: '',\n autolinkCppIncludes: '',\n autolinkCppPackageProviders:\n '\\n UNREFERENCED_PARAMETER(packageProviders);', // CODESYNC: vnext\\local-cli\\runWindows\\utils\\autolink.js\n };\n\n const commonMappings =\n projectType === 'app'\n ? [\n // app common mappings\n {\n from: path.join(\n srcRootPath,\n options.useDevMode\n ? 'metro.devMode.config.js'\n : 'metro.config.js',\n ),\n to: 'metro.config.js',\n },\n {\n from: path.join(srcRootPath, '_gitignore'),\n to: path.join(windowsDir, '.gitignore'),\n },\n {\n from: path.join(srcRootPath, 'b_gitignore'),\n to: path.join(windowsDir, newProjectName, '.gitignore'),\n },\n {\n from: path.join(srcRootPath, 'index.windows.bundle'),\n to: path.join(\n windowsDir,\n newProjectName,\n bundleDir,\n 'index.windows.bundle',\n ),\n },\n {\n from: path.join(srcPath, projDir, 'MyApp.sln'),\n to: path.join(windowsDir, newProjectName + '.sln'),\n },\n ]\n : [\n // lib common mappings\n {\n from: path.join(srcRootPath, '_gitignore'),\n to: path.join(windowsDir, '.gitignore'),\n },\n {\n from: path.join(srcPath, projDir, 'MyLib.sln'),\n to: path.join(windowsDir, newProjectName + '.sln'),\n },\n ];\n\n for (const mapping of commonMappings) {\n await copyAndReplaceWithChangedCallback(\n mapping.from,\n destPath,\n mapping.to,\n templateVars,\n options.overwrite,\n );\n }\n\n if (language === 'cs') {\n const csMappings =\n projectType === 'app'\n ? [\n // cs app mappings\n {\n from: path.join(srcPath, projDir, 'MyApp.csproj'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.csproj',\n ),\n },\n ]\n : [\n // cs lib mappings\n {\n from: path.join(srcPath, projDir, 'MyLib.csproj'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.csproj',\n ),\n },\n ];\n\n for (const mapping of csMappings) {\n await copyAndReplaceWithChangedCallback(\n mapping.from,\n destPath,\n mapping.to,\n templateVars,\n options.overwrite,\n );\n }\n } else {\n const cppMappings =\n projectType === 'app'\n ? [\n // cpp app mappings\n {\n from: path.join(srcPath, projDir, 'MyApp.vcxproj'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.vcxproj',\n ),\n },\n {\n from: path.join(srcPath, projDir, 'MyApp.vcxproj.filters'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.vcxproj.filters',\n ),\n },\n ]\n : [\n // cpp lib mappings\n {\n from: path.join(srcPath, projDir, 'MyLib.vcxproj'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.vcxproj',\n ),\n },\n {\n from: path.join(srcPath, projDir, 'MyLib.vcxproj.filters'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.vcxproj.filters',\n ),\n },\n {\n from: path.join(srcPath, projDir, 'MyLib.def'),\n to: path.join(\n windowsDir,\n newProjectName,\n newProjectName + '.def',\n ),\n },\n ];\n\n for (const mapping of cppMappings) {\n await copyAndReplaceWithChangedCallback(\n mapping.from,\n destPath,\n mapping.to,\n templateVars,\n options.overwrite,\n );\n }\n }\n\n // shared proj\n if (fs.existsSync(path.join(sharedPath, projDir))) {\n const sharedProjMappings = [];\n\n sharedProjMappings.push({\n from: path.join(sharedPath, projDir, 'NuGet_Config'),\n to: path.join(windowsDir, 'NuGet.Config'),\n });\n\n if (\n fs.existsSync(\n path.join(sharedPath, projDir, 'ExperimentalFeatures.props'),\n )\n ) {\n sharedProjMappings.push({\n from: path.join(sharedPath, projDir, 'ExperimentalFeatures.props'),\n to: path.join(windowsDir, 'ExperimentalFeatures.props'),\n });\n }\n\n for (const mapping of sharedProjMappings) {\n await copyAndReplaceWithChangedCallback(\n mapping.from,\n destPath,\n mapping.to,\n templateVars,\n options.overwrite,\n );\n }\n }\n\n // shared assets\n if (fs.existsSync(path.join(sharedPath, 'assets'))) {\n await copyAndReplaceAll(\n path.join(sharedPath, 'assets'),\n destPath,\n path.join(windowsDir, newProjectName, 'Assets'),\n templateVars,\n options.overwrite,\n );\n }\n\n // shared src\n if (fs.existsSync(path.join(sharedPath, 'src'))) {\n await copyAndReplaceAll(\n path.join(sharedPath, 'src'),\n destPath,\n path.join(windowsDir, newProjectName),\n templateVars,\n options.overwrite,\n );\n }\n\n // src\n if (fs.existsSync(path.join(srcPath, 'src'))) {\n await copyAndReplaceAll(\n path.join(srcPath, 'src'),\n destPath,\n path.join(windowsDir, newProjectName),\n templateVars,\n options.overwrite,\n );\n }\n\n if (projectType === 'app') {\n console.log(chalk.white.bold('To run your app on UWP:'));\n console.log(chalk.white(' npx react-native run-windows'));\n }\n}\n\nfunction toCppNamespace(namespace: string) {\n return namespace.replace(/\\./g, '::');\n}\n\nexport async function installScriptsAndDependencies(options: {\n verbose: boolean;\n}) {\n const projectPackage = await WritableNpmPackage.fromPath(process.cwd());\n if (!projectPackage) {\n throw new Error(\n `The current directory '${process.cwd()}' is not the root of an npm package`,\n );\n }\n\n await projectPackage.mergeProps({\n scripts: {windows: 'react-native run-windows'},\n });\n\n const rnwPackage = await findPackage('react-native-windows');\n if (!rnwPackage) {\n throw new Error('Could not locate the package for react-native-windows');\n }\n\n const rnPackage = await findPackage('react-native');\n if (!rnPackage) {\n throw new Error('Could not locate the package for react-native');\n }\n\n // We add an exclusionList from metro config. This will be hoisted, but add\n // an explicit dep because we require it directly.\n const cliPackage = await findPackage('@react-native-community/cli', {\n searchPath: rnPackage.path,\n });\n const metroConfigPackage = await findPackage('metro-config', {\n searchPath: cliPackage?.path || rnPackage.path,\n });\n\n if (metroConfigPackage) {\n await projectPackage.mergeProps({\n devDependencies: {\n 'metro-config': `^${metroConfigPackage.json.version}`,\n },\n });\n }\n\n const rnPeerDependency = rnwPackage.json.peerDependencies['react-native'];\n\n if (\n !semver.satisfies(rnPackage.json.version, rnPeerDependency) &&\n projectPackage.json.dependencies?.['react-native']\n ) {\n console.log(\n chalk.green('Installing a compatible version of react-native:'),\n );\n console.log(chalk.white(` ${rnPeerDependency}`));\n\n // Patch package.json to have proper react-native version and install\n await projectPackage.mergeProps({\n dependencies: {'react-native': rnPeerDependency},\n });\n\n // Install dependencies using correct package manager\n const isYarn = fs.existsSync(path.join(process.cwd(), 'yarn.lock'));\n childProcess.execSync(\n isYarn ? 'yarn' : 'npm i',\n options.verbose ? {stdio: 'inherit'} : {},\n );\n }\n}\n"]}
|
|
@@ -4,12 +4,9 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
* @format
|
|
6
6
|
*/
|
|
7
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
-
};
|
|
10
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
8
|
exports.runWindowsOptions = void 0;
|
|
12
|
-
const
|
|
9
|
+
const telemetry_1 = require("@react-native-windows/telemetry");
|
|
13
10
|
exports.runWindowsOptions = [
|
|
14
11
|
{
|
|
15
12
|
name: '--release',
|
|
@@ -23,11 +20,7 @@ exports.runWindowsOptions = [
|
|
|
23
20
|
{
|
|
24
21
|
name: '--arch [string]',
|
|
25
22
|
description: 'The build architecture (ARM64, x86, x64)',
|
|
26
|
-
default:
|
|
27
|
-
? 'x86'
|
|
28
|
-
: os_1.default.arch() === 'arm64'
|
|
29
|
-
? 'ARM64'
|
|
30
|
-
: os_1.default.arch(),
|
|
23
|
+
default: parseBuildArch((0, telemetry_1.deviceArchitecture)()),
|
|
31
24
|
parse: parseBuildArch,
|
|
32
25
|
},
|
|
33
26
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runWindowsOptions.js","sourceRoot":"","sources":["../../src/runWindows/runWindowsOptions.ts"],"names":[],"mappings":";AAAA;;;;GAIG
|
|
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';\nimport {deviceArchitecture} from '@react-native-windows/telemetry';\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: parseBuildArch(deviceArchitecture()),\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',\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"]}
|
|
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.endTelemetrySession = exports.startTelemetrySession = exports.getDefaultOptions = void 0;
|
|
9
9
|
const lodash_1 = require("lodash");
|
|
10
10
|
const telemetry_1 = require("@react-native-windows/telemetry");
|
|
11
|
+
const commandWithProgress_1 = require("./commandWithProgress");
|
|
11
12
|
/**
|
|
12
13
|
* Calculates a the default values of a given react-native CLI command's options.
|
|
13
14
|
* @param config Config passed from react-native CLI.
|
|
@@ -63,12 +64,19 @@ exports.getDefaultOptions = getDefaultOptions;
|
|
|
63
64
|
* @param optionSanitizer Function to sanitize the option values for telemetry.
|
|
64
65
|
*/
|
|
65
66
|
async function startTelemetrySession(commandName, config, options, defaultOptions, optionSanitizer) {
|
|
67
|
+
const verbose = options.logging === true;
|
|
66
68
|
if (!options.telemetry) {
|
|
67
|
-
if (
|
|
68
|
-
|
|
69
|
+
if (verbose) {
|
|
70
|
+
(0, commandWithProgress_1.newInfo)('Telemetry is disabled');
|
|
69
71
|
}
|
|
70
72
|
return;
|
|
71
73
|
}
|
|
74
|
+
if (verbose) {
|
|
75
|
+
(0, commandWithProgress_1.newInfo)(`Running ${(0, telemetry_1.nodeArchitecture)()} node on a ${(0, telemetry_1.deviceArchitecture)()} machine`);
|
|
76
|
+
}
|
|
77
|
+
if ((0, telemetry_1.deviceArchitecture)() !== (0, telemetry_1.nodeArchitecture)()) {
|
|
78
|
+
(0, commandWithProgress_1.newWarn)('This version of node was built for a different architecture than this machine and may cause unintended behavior');
|
|
79
|
+
}
|
|
72
80
|
await telemetry_1.Telemetry.setup();
|
|
73
81
|
const sanitizedOptions = (0, telemetry_1.commanderOptionsToOptions)(options, optionSanitizer);
|
|
74
82
|
const sanitizedDefaultOptions = (0, telemetry_1.commanderOptionsToOptions)(defaultOptions, optionSanitizer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetryHelpers.js","sourceRoot":"","sources":["../../../src/runWindows/utils/telemetryHelpers.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,mCAAiC;AAQjC,+
|
|
1
|
+
{"version":3,"file":"telemetryHelpers.js","sourceRoot":"","sources":["../../../src/runWindows/utils/telemetryHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport {camelCase} from 'lodash';\n\nimport {\n Config,\n CommandOption,\n OptionValue,\n} from '@react-native-community/cli-types';\n\nimport {\n Telemetry,\n CodedError,\n CommandStartInfo,\n CommandEndInfo,\n CommanderOptionsType,\n commanderOptionsToOptions,\n optionsToArgs,\n OptionSanitizer,\n configToProjectInfo,\n getProjectFileFromConfig,\n deviceArchitecture,\n nodeArchitecture,\n} from '@react-native-windows/telemetry';\n\nimport {newInfo, newWarn} from './commandWithProgress';\n\n/**\n * Calculates a the default values of a given react-native CLI command's options.\n * @param config Config passed from react-native CLI.\n * @param commandOptions The options definition for the command.\n * @returns The default options for the command.\n */\nexport function getDefaultOptions(\n config: Config,\n commandOptions: CommandOption[],\n): CommanderOptionsType {\n const result: CommanderOptionsType = {\n logging: false,\n };\n for (const option of commandOptions) {\n let key = option.name.startsWith('--')\n ? option.name.slice('--'.length)\n : option.name;\n key = key.trim();\n\n let value = option.default;\n if (value !== undefined && (value as (ctx: Config) => OptionValue).name) {\n value = (value as (ctx: Config) => OptionValue)(config);\n }\n\n if (key.endsWith(' [string]')) {\n // Option is a string\n key = key.slice(0, -' [string]'.length);\n // Option is a number\n } else if (key.endsWith(' [number]')) {\n key = key.slice(0, -' [number]'.length);\n } else {\n // Option is a boolean\n // Note: Commander ignores the default property for booleans\n if (key.startsWith('no-')) {\n key = key.slice('no-'.length);\n // Commander always defaults to true for flags that start with --no\n value = true;\n } else {\n // Commander always defaults to undefined for flags\n value = undefined;\n }\n }\n\n key = camelCase(key);\n result[key] = value;\n }\n return result;\n}\n\n/**\n * Sets up and starts the telemetry gathering for the CLI command.\n * @param commandName The name of the CLI command.\n * @param config Config passed from react-native CLI.\n * @param options Options passed from react-native CLI.\n * @param defaultOptions Default options for the command.\n * @param optionSanitizer Function to sanitize the option values for telemetry.\n */\nexport async function startTelemetrySession(\n commandName: string,\n config: Config,\n options: CommanderOptionsType,\n defaultOptions: CommanderOptionsType,\n optionSanitizer: OptionSanitizer,\n) {\n const verbose = options.logging === true;\n\n if (!options.telemetry) {\n if (verbose) {\n newInfo('Telemetry is disabled');\n }\n return;\n }\n\n if (verbose) {\n newInfo(\n `Running ${nodeArchitecture()} node on a ${deviceArchitecture()} machine`,\n );\n }\n\n if (deviceArchitecture() !== nodeArchitecture()) {\n newWarn(\n 'This version of node was built for a different architecture than this machine and may cause unintended behavior',\n );\n }\n\n await Telemetry.setup();\n\n const sanitizedOptions = commanderOptionsToOptions(options, optionSanitizer);\n const sanitizedDefaultOptions = commanderOptionsToOptions(\n defaultOptions,\n optionSanitizer,\n );\n const sanitizedArgs = optionsToArgs(sanitizedOptions, process.argv);\n\n const startInfo: CommandStartInfo = {\n commandName,\n args: sanitizedArgs,\n options: sanitizedOptions,\n defaultOptions: sanitizedDefaultOptions,\n };\n\n Telemetry.startCommand(startInfo);\n\n const projectInfo = await configToProjectInfo(config);\n if (projectInfo) {\n Telemetry.setProjectInfo(projectInfo);\n }\n\n const projectFile = getProjectFileFromConfig(config);\n if (projectFile) {\n await Telemetry.populateNuGetPackageVersions(projectFile);\n }\n}\n\n/**\n * Ends the gathering of telemetry for the CLI command.\n * @param error The error (if any) thrown during the command.\n * @param getExtraProps Function to get any extra command-specific telemetry properties.\n */\nexport async function endTelemetrySession(\n error?: Error,\n getExtraProps?: () => Promise<Record<string, any>>,\n) {\n if (!Telemetry.isEnabled()) {\n // Bail early so don't waste time here\n return;\n }\n\n const endInfo: CommandEndInfo = {\n resultCode: 'Success',\n };\n\n if (error) {\n endInfo.resultCode =\n error instanceof CodedError ? (error as CodedError).type : 'Unknown';\n }\n\n Telemetry.endCommand(\n endInfo,\n getExtraProps ? await getExtraProps() : undefined,\n );\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-native-windows/cli",
|
|
3
|
-
"version": "0.0.0-canary.
|
|
3
|
+
"version": "0.0.0-canary.184",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "lib-commonjs/index.js",
|
|
6
6
|
"repository": {
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
"watch": "rnw-scripts watch"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@react-native-windows/codegen": "0.0.0-canary.
|
|
20
|
+
"@react-native-windows/codegen": "0.0.0-canary.68",
|
|
21
21
|
"@react-native-windows/fs": "^0.0.0-canary.27",
|
|
22
22
|
"@react-native-windows/package-utils": "^0.0.0-canary.53",
|
|
23
|
-
"@react-native-windows/telemetry": "^0.0.0-canary.
|
|
23
|
+
"@react-native-windows/telemetry": "^0.0.0-canary.76",
|
|
24
24
|
"@xmldom/xmldom": "^0.7.7",
|
|
25
25
|
"chalk": "^4.1.0",
|
|
26
26
|
"cli-spinners": "^2.2.0",
|