@react-native-windows/cli 0.68.2 → 0.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +0 -2
  2. package/lib-commonjs/config/configUtils.js +19 -0
  3. package/lib-commonjs/config/configUtils.js.map +1 -1
  4. package/lib-commonjs/config/dependencyConfig.js +6 -2
  5. package/lib-commonjs/config/dependencyConfig.js.map +1 -1
  6. package/lib-commonjs/config/projectConfig.js +5 -1
  7. package/lib-commonjs/config/projectConfig.js.map +1 -1
  8. package/lib-commonjs/e2etest/autolink.test.js +10 -63
  9. package/lib-commonjs/e2etest/autolink.test.js.map +1 -1
  10. package/lib-commonjs/generator-common/index.js +6 -6
  11. package/lib-commonjs/generator-common/index.js.map +1 -1
  12. package/lib-commonjs/generator-windows/index.js +56 -12
  13. package/lib-commonjs/generator-windows/index.js.map +1 -1
  14. package/lib-commonjs/index.js +5 -1
  15. package/lib-commonjs/index.js.map +1 -1
  16. package/lib-commonjs/runWindows/runWindows.js +6 -2
  17. package/lib-commonjs/runWindows/runWindows.js.map +1 -1
  18. package/lib-commonjs/runWindows/runWindowsOptions.js +1 -1
  19. package/lib-commonjs/runWindows/runWindowsOptions.js.map +1 -1
  20. package/lib-commonjs/runWindows/utils/autolink.js +25 -21
  21. package/lib-commonjs/runWindows/utils/autolink.js.map +1 -1
  22. package/lib-commonjs/runWindows/utils/build.js +1 -1
  23. package/lib-commonjs/runWindows/utils/build.js.map +1 -1
  24. package/lib-commonjs/runWindows/utils/checkRequirements.js +1 -1
  25. package/lib-commonjs/runWindows/utils/checkRequirements.js.map +1 -1
  26. package/lib-commonjs/runWindows/utils/commandWithProgress.js +4 -4
  27. package/lib-commonjs/runWindows/utils/commandWithProgress.js.map +1 -1
  28. package/lib-commonjs/runWindows/utils/deploy.js +12 -8
  29. package/lib-commonjs/runWindows/utils/deploy.js.map +1 -1
  30. package/lib-commonjs/runWindows/utils/msbuildtools.js +11 -7
  31. package/lib-commonjs/runWindows/utils/msbuildtools.js.map +1 -1
  32. package/lib-commonjs/runWindows/utils/version.js +1 -1
  33. package/lib-commonjs/runWindows/utils/version.js.map +1 -1
  34. package/lib-commonjs/runWindows/utils/vsInstalls.js +1 -1
  35. package/lib-commonjs/runWindows/utils/vsInstalls.js.map +1 -1
  36. package/lib-commonjs/runWindows/utils/vstools.js +3 -3
  37. package/lib-commonjs/runWindows/utils/vstools.js.map +1 -1
  38. package/lib-commonjs/runWindows/utils/winappdeploytool.js +2 -2
  39. package/lib-commonjs/runWindows/utils/winappdeploytool.js.map +1 -1
  40. package/package.json +10 -8
@@ -112,9 +112,9 @@ function addProjectToSolution(slnFile, project, verbose = false, checkMode = fal
112
112
  contentsChanged = true;
113
113
  }
114
114
  // Check for the project configuration platforms
115
- const slnConfigs = getBlockContentsFromLines(slnLines, '\tGlobalSection(SolutionConfigurationPlatforms) = preSolution', '\tEndGlobalSection', false).map((line) => line.match(/\s+([\w\s|]+)\s=/)[1]);
115
+ const slnConfigs = getBlockContentsFromLines(slnLines, '\tGlobalSection(SolutionConfigurationPlatforms) = preSolution', '\tEndGlobalSection', false).map(line => line.match(/\s+([\w\s|]+)\s=/)[1]);
116
116
  const projectConfigLines = [];
117
- slnConfigs.forEach((slnConfig) => {
117
+ slnConfigs.forEach(slnConfig => {
118
118
  if (!slnConfig.endsWith('|Any CPU')) {
119
119
  projectConfigLines.push(`\t\t${projectGuid}.${slnConfig}.ActiveCfg = ${project.projectLang === 'cpp'
120
120
  ? slnConfig.replace('x86', 'Win32')
@@ -125,7 +125,7 @@ function addProjectToSolution(slnFile, project, verbose = false, checkMode = fal
125
125
  }
126
126
  });
127
127
  const projectConfigStartIndex = slnLines.indexOf('\tGlobalSection(ProjectConfigurationPlatforms) = postSolution');
128
- projectConfigLines.forEach((projectConfigLine) => {
128
+ projectConfigLines.forEach(projectConfigLine => {
129
129
  if (!slnLines.includes(projectConfigLine)) {
130
130
  if (verbose) {
131
131
  const configLine = projectConfigLine.substr(projectConfigLine.indexOf('= ') + 2);
@@ -1 +1 @@
1
- {"version":3,"file":"vstools.js","sourceRoot":"","sources":["../../../src/runWindows/utils/vstools.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,kEAA0C;AAC1C,gDAAwB;AACxB,kDAA0B;AAE1B,+DAA2D;AAE3D,MAAM,0BAA0B,GAAG;IACjC,GAAG,EAAE,wCAAwC;IAC7C,EAAE,EAAE,wCAAwC;CAC7C,CAAC;AAEW,QAAA,yBAAyB,GACpC,wCAAwC,CAAC;AAE3C;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,KAAe,EAAE,KAAe;IAC1D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3C,IAAI,UAAU,IAAI,CAAC,EAAE;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrC,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;oBACtC,OAAO,KAAK,CAAC;iBACd;aACF;YACD,OAAO,IAAI,CAAC;SACb;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,KAAe,EAAE,KAAe,EAAE,KAAa;IAC3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACtC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,yBAAyB,CAChC,KAAe,EACf,SAAiB,EACjB,OAAe,EACf,kBAA2B,IAAI;IAE/B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAEpD,IAAI,UAAU,IAAI,CAAC,IAAI,UAAU,GAAG,QAAQ,EAAE;QAC5C,IAAI,eAAe,EAAE;YACnB,OAAO,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;SAC9C;aAAM,IAAI,UAAU,GAAG,CAAC,GAAG,QAAQ,EAAE;YACpC,OAAO,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;SAC9C;KACF;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAClC,OAAe,EACf,OAAgB,EAChB,UAAmB,KAAK,EACxB,YAAqB,KAAK;IAE1B,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE;QAChC,MAAM,IAAI,sBAAU,CAClB,sBAAsB,EACtB,wDAAwD,CACzD,CAAC;KACH;IAED,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE;QAChC,MAAM,IAAI,sBAAU,CAClB,sBAAsB,EACtB,wDAAwD,CACzD,CAAC;KACH;IAED,IAAI,OAAO,EAAE;QACX,OAAO,CAAC,GAAG,CACT,cAAc,eAAK,CAAC,IAAI,CAAC,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,CAClE,CAAC;KACH;IAED,MAAM,mBAAmB,GAAG,YAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IAEhE,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEpD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEnE,IAAI,eAAe,GAAG,KAAK,CAAC;IAE5B,oCAAoC;IAEpC,MAAM,MAAM,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,cAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAElE,MAAM,eAAe,GACnB,iBAAiB,IAAI,OAAO;QAC1B,CAAC,CAAC,OAAO,CAAC,eAAgB;QAC1B,CAAC,CAAC,0BAA0B,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEtD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;IAEtD,MAAM,iBAAiB,GAAG;QACxB,YAAY,eAAe,SAAS,OAAO,CAAC,WAAW,OAAO,cAAc,OAAO,WAAW,GAAG;QACjG,YAAY;KACb,CAAC;IAEF,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE;QACpD,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC;SAC3D;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAC/D,eAAe,GAAG,IAAI,CAAC;KACxB;IAED,gDAAgD;IAEhD,MAAM,UAAU,GAAG,yBAAyB,CAC1C,QAAQ,EACR,+DAA+D,EAC/D,oBAAoB,EACpB,KAAK,CACN,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD,MAAM,kBAAkB,GAAa,EAAE,CAAC;IAExC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QAC/B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YACnC,kBAAkB,CAAC,IAAI,CACrB,OAAO,WAAW,IAAI,SAAS,gBAC7B,OAAO,CAAC,WAAW,KAAK,KAAK;gBAC3B,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;gBACnC,CAAC,CAAC,SACN,EAAE,CACH,CAAC;YACF,kBAAkB,CAAC,IAAI,CACrB,OAAO,WAAW,IAAI,SAAS,cAC7B,OAAO,CAAC,WAAW,KAAK,KAAK;gBAC3B,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;gBACnC,CAAC,CAAC,SACN,EAAE,CACH,CAAC;SACH;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,uBAAuB,GAAG,QAAQ,CAAC,OAAO,CAC9C,+DAA+D,CAChE,CAAC;IAEF,kBAAkB,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,EAAE;QAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;YACzC,IAAI,OAAO,EAAE;gBACX,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CACzC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CACpC,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,WAAW,UAAU,gBAAgB,CAAC,CAAC,CAAC;aAClE;YAED,MAAM,qBAAqB,GAAG,QAAQ,CAAC,OAAO,CAC5C,oBAAoB,EACpB,uBAAuB,CACxB,CAAC;YAEF,QAAQ,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;YAC7D,eAAe,GAAG,IAAI,CAAC;SACxB;IACH,CAAC,CAAC,CAAC;IAEH,oDAAoD;IACpD,IAAI,eAAe,EAAE;QACnB,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CACV,GAAG,eAAK,CAAC,IAAI,CAAC,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,uBAAuB,CAC7D,CACF,CAAC;SACH;QAED,IAAI,CAAC,SAAS,EAAE;YACd,IAAI,OAAO,EAAE;gBACX,OAAO,CAAC,GAAG,CACT,sBAAsB,eAAK,CAAC,IAAI,CAAC,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAC9D,CAAC;aACH;YAED,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC1D,YAAE,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE;gBACrC,QAAQ,EAAE,MAAM;gBAChB,IAAI,EAAE,GAAG;aACV,CAAC,CAAC;SACJ;KACF;SAAM;QACL,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAK,CAAC,IAAI,CAAC,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;SACrE;KACF;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAhJD,oDAgJC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n * @format\n */\n\nimport fs from '@react-native-windows/fs';\nimport path from 'path';\nimport chalk from 'chalk';\nimport {Project} from '../../config/projectConfig';\nimport {CodedError} from '@react-native-windows/telemetry';\n\nconst projectTypeGuidsByLanguage = {\n cpp: '{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}',\n cs: '{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}',\n};\n\nexport const dotNetCoreProjectTypeGuid =\n '{9A19103F-16F7-4668-BE54-9A1E7A4F7556}';\n\n/**\n * Checks is the given block of lines exists within an array of lines.\n * @param lines The array of lines to search.\n * @param block The block of lines to search for.\n * @return True if the block of lines does exist within lines.\n */\nfunction linesContainsBlock(lines: string[], block: string[]): boolean {\n if (block.length > 0) {\n const startIndex = lines.indexOf(block[0]);\n\n if (startIndex >= 0) {\n for (let i = 1; i < block.length; i++) {\n if (lines[startIndex + i] !== block[i]) {\n return false;\n }\n }\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Insert the given block of lines into an array of lines.\n * @param lines The array of lines to insert into.\n * @param block The block of lines to insert.\n * @param index The index to perform the insert.\n */\nfunction insertBlockIntoLines(lines: string[], block: string[], index: number) {\n for (let i = 0; i < block.length; i++) {\n lines.splice(index + i, 0, block[i]);\n }\n}\n\n/**\n * Search through an array of lines for a block of lines starting with startLine and ending with endLine.\n * @param lines The array of lines to search.\n * @param startLine The first line of the block.\n * @param endLine The last line of the block.\n * @param includeStartEnd Include the start and end lines in the result.\n * @return The found block of lines, if found.\n */\nfunction getBlockContentsFromLines(\n lines: string[],\n startLine: string,\n endLine: string,\n includeStartEnd: boolean = true,\n): string[] {\n const startIndex = lines.indexOf(startLine);\n const endIndex = lines.indexOf(endLine, startIndex);\n\n if (startIndex >= 0 && startIndex < endIndex) {\n if (includeStartEnd) {\n return lines.slice(startIndex, endIndex + 1);\n } else if (startIndex + 1 < endIndex) {\n return lines.slice(startIndex + 1, endIndex);\n }\n }\n\n return [];\n}\n\n/**\n * Adds the necessary info from a VS project into a VS solution file so that it will build.\n * @param slnFile The Absolute path to the target VS solution file.\n * @param project The object representing the project info.\n * @param verbose If true, enable verbose logging.\n * @param checkMode It true, don't make any changes.\n * @return Whether any changes were necessary.\n */\nexport function addProjectToSolution(\n slnFile: string,\n project: Project,\n verbose: boolean = false,\n checkMode: boolean = false,\n): boolean {\n if (project.projectLang === null) {\n throw new CodedError(\n 'AddProjectToSolution',\n 'Unable to add project to solution, projectLang is null',\n );\n }\n\n if (project.projectGuid === null) {\n throw new CodedError(\n 'AddProjectToSolution',\n 'Unable to add project to solution, projectGuid is null',\n );\n }\n\n if (verbose) {\n console.log(\n `Processing ${chalk.bold(path.basename(project.projectFile))}...`,\n );\n }\n\n const originalSlnContents = fs.readFileSync(slnFile).toString();\n\n const isCRLF = originalSlnContents.includes('\\r\\n');\n\n const slnLines = originalSlnContents.split(isCRLF ? '\\r\\n' : '\\n');\n\n let contentsChanged = false;\n\n // Check for the project entry block\n\n const slnDir = path.dirname(slnFile);\n const relProjectFile = path.relative(slnDir, project.projectFile);\n\n const projectTypeGuid =\n 'projectTypeGuid' in project\n ? project.projectTypeGuid!\n : projectTypeGuidsByLanguage[project.projectLang];\n\n const projectGuid = project.projectGuid.toUpperCase();\n\n const projectEntryBlock = [\n `Project(\"${projectTypeGuid}\") = \"${project.projectName}\", \"${relProjectFile}\", \"${projectGuid}\"`,\n 'EndProject',\n ];\n\n if (!linesContainsBlock(slnLines, projectEntryBlock)) {\n if (verbose) {\n console.log(chalk.yellow('Missing project entry block.'));\n }\n\n const globalIndex = slnLines.indexOf('Global');\n insertBlockIntoLines(slnLines, projectEntryBlock, globalIndex);\n contentsChanged = true;\n }\n\n // Check for the project configuration platforms\n\n const slnConfigs = getBlockContentsFromLines(\n slnLines,\n '\\tGlobalSection(SolutionConfigurationPlatforms) = preSolution',\n '\\tEndGlobalSection',\n false,\n ).map((line) => line.match(/\\s+([\\w\\s|]+)\\s=/)![1]);\n\n const projectConfigLines: string[] = [];\n\n slnConfigs.forEach((slnConfig) => {\n if (!slnConfig.endsWith('|Any CPU')) {\n projectConfigLines.push(\n `\\t\\t${projectGuid}.${slnConfig}.ActiveCfg = ${\n project.projectLang === 'cpp'\n ? slnConfig.replace('x86', 'Win32')\n : slnConfig\n }`,\n );\n projectConfigLines.push(\n `\\t\\t${projectGuid}.${slnConfig}.Build.0 = ${\n project.projectLang === 'cpp'\n ? slnConfig.replace('x86', 'Win32')\n : slnConfig\n }`,\n );\n }\n });\n\n const projectConfigStartIndex = slnLines.indexOf(\n '\\tGlobalSection(ProjectConfigurationPlatforms) = postSolution',\n );\n\n projectConfigLines.forEach((projectConfigLine) => {\n if (!slnLines.includes(projectConfigLine)) {\n if (verbose) {\n const configLine = projectConfigLine.substr(\n projectConfigLine.indexOf('= ') + 2,\n );\n console.log(chalk.yellow(`Missing ${configLine} config block.`));\n }\n\n const projectConfigEndIndex = slnLines.indexOf(\n '\\tEndGlobalSection',\n projectConfigStartIndex,\n );\n\n slnLines.splice(projectConfigEndIndex, 0, projectConfigLine);\n contentsChanged = true;\n }\n });\n\n // Write out new solution file if there were changes\n if (contentsChanged) {\n if (verbose) {\n console.log(\n chalk.yellow(\n `${chalk.bold(path.basename(slnFile))} needs to be updated.`,\n ),\n );\n }\n\n if (!checkMode) {\n if (verbose) {\n console.log(\n `Writing changes to ${chalk.bold(path.basename(slnFile))}...`,\n );\n }\n\n const slnContents = slnLines.join(isCRLF ? '\\r\\n' : '\\n');\n fs.writeFileSync(slnFile, slnContents, {\n encoding: 'utf8',\n flag: 'w',\n });\n }\n } else {\n if (verbose) {\n console.log(`No changes to ${chalk.bold(path.basename(slnFile))}.`);\n }\n }\n\n return contentsChanged;\n}\n"]}
1
+ {"version":3,"file":"vstools.js","sourceRoot":"","sources":["../../../src/runWindows/utils/vstools.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n * @format\n */\n\nimport fs from '@react-native-windows/fs';\nimport path from 'path';\nimport chalk from 'chalk';\nimport {Project} from '../../config/projectConfig';\nimport {CodedError} from '@react-native-windows/telemetry';\n\nconst projectTypeGuidsByLanguage = {\n cpp: '{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}',\n cs: '{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}',\n};\n\nexport const dotNetCoreProjectTypeGuid =\n '{9A19103F-16F7-4668-BE54-9A1E7A4F7556}';\n\n/**\n * Checks is the given block of lines exists within an array of lines.\n * @param lines The array of lines to search.\n * @param block The block of lines to search for.\n * @return True if the block of lines does exist within lines.\n */\nfunction linesContainsBlock(lines: string[], block: string[]): boolean {\n if (block.length > 0) {\n const startIndex = lines.indexOf(block[0]);\n\n if (startIndex >= 0) {\n for (let i = 1; i < block.length; i++) {\n if (lines[startIndex + i] !== block[i]) {\n return false;\n }\n }\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Insert the given block of lines into an array of lines.\n * @param lines The array of lines to insert into.\n * @param block The block of lines to insert.\n * @param index The index to perform the insert.\n */\nfunction insertBlockIntoLines(lines: string[], block: string[], index: number) {\n for (let i = 0; i < block.length; i++) {\n lines.splice(index + i, 0, block[i]);\n }\n}\n\n/**\n * Search through an array of lines for a block of lines starting with startLine and ending with endLine.\n * @param lines The array of lines to search.\n * @param startLine The first line of the block.\n * @param endLine The last line of the block.\n * @param includeStartEnd Include the start and end lines in the result.\n * @return The found block of lines, if found.\n */\nfunction getBlockContentsFromLines(\n lines: string[],\n startLine: string,\n endLine: string,\n includeStartEnd: boolean = true,\n): string[] {\n const startIndex = lines.indexOf(startLine);\n const endIndex = lines.indexOf(endLine, startIndex);\n\n if (startIndex >= 0 && startIndex < endIndex) {\n if (includeStartEnd) {\n return lines.slice(startIndex, endIndex + 1);\n } else if (startIndex + 1 < endIndex) {\n return lines.slice(startIndex + 1, endIndex);\n }\n }\n\n return [];\n}\n\n/**\n * Adds the necessary info from a VS project into a VS solution file so that it will build.\n * @param slnFile The Absolute path to the target VS solution file.\n * @param project The object representing the project info.\n * @param verbose If true, enable verbose logging.\n * @param checkMode It true, don't make any changes.\n * @return Whether any changes were necessary.\n */\nexport function addProjectToSolution(\n slnFile: string,\n project: Project,\n verbose: boolean = false,\n checkMode: boolean = false,\n): boolean {\n if (project.projectLang === null) {\n throw new CodedError(\n 'AddProjectToSolution',\n 'Unable to add project to solution, projectLang is null',\n );\n }\n\n if (project.projectGuid === null) {\n throw new CodedError(\n 'AddProjectToSolution',\n 'Unable to add project to solution, projectGuid is null',\n );\n }\n\n if (verbose) {\n console.log(\n `Processing ${chalk.bold(path.basename(project.projectFile))}...`,\n );\n }\n\n const originalSlnContents = fs.readFileSync(slnFile).toString();\n\n const isCRLF = originalSlnContents.includes('\\r\\n');\n\n const slnLines = originalSlnContents.split(isCRLF ? '\\r\\n' : '\\n');\n\n let contentsChanged = false;\n\n // Check for the project entry block\n\n const slnDir = path.dirname(slnFile);\n const relProjectFile = path.relative(slnDir, project.projectFile);\n\n const projectTypeGuid =\n 'projectTypeGuid' in project\n ? project.projectTypeGuid!\n : projectTypeGuidsByLanguage[project.projectLang];\n\n const projectGuid = project.projectGuid.toUpperCase();\n\n const projectEntryBlock = [\n `Project(\"${projectTypeGuid}\") = \"${project.projectName}\", \"${relProjectFile}\", \"${projectGuid}\"`,\n 'EndProject',\n ];\n\n if (!linesContainsBlock(slnLines, projectEntryBlock)) {\n if (verbose) {\n console.log(chalk.yellow('Missing project entry block.'));\n }\n\n const globalIndex = slnLines.indexOf('Global');\n insertBlockIntoLines(slnLines, projectEntryBlock, globalIndex);\n contentsChanged = true;\n }\n\n // Check for the project configuration platforms\n\n const slnConfigs = getBlockContentsFromLines(\n slnLines,\n '\\tGlobalSection(SolutionConfigurationPlatforms) = preSolution',\n '\\tEndGlobalSection',\n false,\n ).map(line => line.match(/\\s+([\\w\\s|]+)\\s=/)![1]);\n\n const projectConfigLines: string[] = [];\n\n slnConfigs.forEach(slnConfig => {\n if (!slnConfig.endsWith('|Any CPU')) {\n projectConfigLines.push(\n `\\t\\t${projectGuid}.${slnConfig}.ActiveCfg = ${\n project.projectLang === 'cpp'\n ? slnConfig.replace('x86', 'Win32')\n : slnConfig\n }`,\n );\n projectConfigLines.push(\n `\\t\\t${projectGuid}.${slnConfig}.Build.0 = ${\n project.projectLang === 'cpp'\n ? slnConfig.replace('x86', 'Win32')\n : slnConfig\n }`,\n );\n }\n });\n\n const projectConfigStartIndex = slnLines.indexOf(\n '\\tGlobalSection(ProjectConfigurationPlatforms) = postSolution',\n );\n\n projectConfigLines.forEach(projectConfigLine => {\n if (!slnLines.includes(projectConfigLine)) {\n if (verbose) {\n const configLine = projectConfigLine.substr(\n projectConfigLine.indexOf('= ') + 2,\n );\n console.log(chalk.yellow(`Missing ${configLine} config block.`));\n }\n\n const projectConfigEndIndex = slnLines.indexOf(\n '\\tEndGlobalSection',\n projectConfigStartIndex,\n );\n\n slnLines.splice(projectConfigEndIndex, 0, projectConfigLine);\n contentsChanged = true;\n }\n });\n\n // Write out new solution file if there were changes\n if (contentsChanged) {\n if (verbose) {\n console.log(\n chalk.yellow(\n `${chalk.bold(path.basename(slnFile))} needs to be updated.`,\n ),\n );\n }\n\n if (!checkMode) {\n if (verbose) {\n console.log(\n `Writing changes to ${chalk.bold(path.basename(slnFile))}...`,\n );\n }\n\n const slnContents = slnLines.join(isCRLF ? '\\r\\n' : '\\n');\n fs.writeFileSync(slnFile, slnContents, {\n encoding: 'utf8',\n flag: 'w',\n });\n }\n } else {\n if (verbose) {\n console.log(`No changes to ${chalk.bold(path.basename(slnFile))}.`);\n }\n }\n\n return contentsChanged;\n}\n"]}
@@ -52,7 +52,7 @@ class WinAppDeployTool {
52
52
  if (target === 'device') {
53
53
  return devices[0];
54
54
  }
55
- const candidateList = devices.filter((device) => device.guid === target);
55
+ const candidateList = devices.filter(device => device.guid === target);
56
56
  if (candidateList.length > 0) {
57
57
  return candidateList[0];
58
58
  }
@@ -68,7 +68,7 @@ class WinAppDeployTool {
68
68
  const LINE_TEST = /^([\d\.]+?)\s+([\da-fA-F\-]+?)\s+(.+)$/m; // eslint-disable-line no-useless-escape
69
69
  const result = (0, child_process_1.execSync)(`"${this.path}" devices`).toString();
70
70
  const lines = result.split('\r\n');
71
- const matchedLines = lines.filter((line) => LINE_TEST.test(line));
71
+ const matchedLines = lines.filter(line => LINE_TEST.test(line));
72
72
  const devices = matchedLines.map((line, arrayIndex) => {
73
73
  const match = line.match(LINE_TEST);
74
74
  if (!match) {
@@ -1 +1 @@
1
- {"version":3,"file":"winappdeploytool.js","sourceRoot":"","sources":["../../../src/runWindows/utils/winappdeploytool.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;AAEH,kEAA0C;AAC1C,gDAAwB;AACxB,iDAAuC;AACvC,+DAA+E;AAC/E,+DAA2D;AAE3D,SAAS,WAAW,CAAC,CAAa,EAAE,CAAa;IAC/C,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;AACnD,CAAC;AAED,MAAM,UAAU;IACd,YACkB,IAAY,EACZ,IAAY,EACZ,EAAU,EAET,KAAa,EACb,IAAY;QALb,SAAI,GAAJ,IAAI,CAAQ;QACZ,SAAI,GAAJ,IAAI,CAAQ;QACZ,OAAE,GAAF,EAAE,CAAQ;QAET,UAAK,GAAL,KAAK,CAAQ;QACb,SAAI,GAAJ,IAAI,CAAQ;IAC5B,CAAC;IAEJ,QAAQ;QACN,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC;IACtD,CAAC;CACF;AAED,MAAqB,gBAAgB;IAGnC;QACE,MAAM,gBAAgB,GACpB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,cAAI,CAAC,IAAI,CACnB,gBAAiB,EACjB,cAAc,EACd,IAAI,EACJ,KAAK,EACL,KAAK,EACL,qBAAqB,CACtB,CAAC;IACJ,CAAC;IAED,IAAI,WAAW;QACb,OAAO,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,UAAU,CAAC,MAAc;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,MAAM,IAAI,sBAAU,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;SACtD;QAED,IAAI,MAAM,KAAK,UAAU,EAAE;YACzB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7C,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE;gBACnC,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oBAC1C,OAAO,UAAU,CAAC;iBACnB;aACF;SACF;QAED,IAAI,MAAM,KAAK,QAAQ,EAAE;YACvB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;SACnB;QAED,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAEzE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,MAAM,IAAI,sBAAU,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;SACtD;IACH,CAAC;IAED,gBAAgB;QACd,4EAA4E;QAC5E,WAAW;QACX,uFAAuF;QACvF,gEAAgE;QAChE,MAAM,SAAS,GAAG,yCAAyC,CAAC,CAAC,wCAAwC;QAErG,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,IAAI,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAElE,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;YACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,EAAE;gBACV,MAAM,IAAI,sBAAU,CAClB,sBAAsB,EACtB,uCAAuC,CACxC,CAAC;aACH;YAED,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,IAAI,GAAG,QAAQ,CAAC;YAEtB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YACpE,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,iBAAyB,EACzB,YAAwB,EACxB,YAAqB,EACrB,YAAqB,EACrB,GAAY,EACZ,UAAmB,KAAK;QAExB,MAAM,IAAI,GAAG,qBAAqB,YAAY,CAAC,IAAI,EAAE,CAAC;QAEtD,IAAI,YAAY,EAAE;YAChB,IAAA,6BAAO,EACL,mIAAmI,CACpI,CAAC;SACH;QAED,MAAM,IAAI,GAAG;YACX,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACnC,OAAO;YACP,iBAAiB;YACjB,KAAK;YACL,YAAY,CAAC,EAAE;SAChB,CAAC;QAEF,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SACnC;QACD,MAAM,IAAA,yCAAmB,EACvB,IAAA,gCAAU,EAAC,IAAI,CAAC,EAChB,IAAI,EACJ,IAAI,CAAC,IAAI,EACT,IAAI,EACJ,OAAO,EACP,2BAA2B,CAC5B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,OAAe,EACf,YAAwB,EACxB,OAAgB;QAEhB,MAAM,IAAI,GAAG,yBAAyB,YAAY,CAAC,IAAI,EAAE,CAAC;QAC1D,MAAM,IAAA,yCAAmB,EACvB,IAAA,gCAAU,EAAC,IAAI,CAAC,EAChB,IAAI,EACJ,IAAI,CAAC,IAAI,EACT,sBAAsB,OAAO,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,EACjE,OAAO,EACP,6BAA6B,CAC9B,CAAC;IACJ,CAAC;CACF;AArID,mCAqIC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport fs from '@react-native-windows/fs';\nimport path from 'path';\nimport {execSync} from 'child_process';\nimport {newSpinner, commandWithProgress, newWarn} from './commandWithProgress';\nimport {CodedError} from '@react-native-windows/telemetry';\n\nfunction sortDevices(l: DeviceInfo, r: DeviceInfo): number {\n return l.toString().length - r.toString().length;\n}\n\nclass DeviceInfo {\n constructor(\n public readonly name: string,\n public readonly guid: string,\n public readonly ip: string,\n\n private readonly index: number,\n private readonly type: string,\n ) {}\n\n toString() {\n return `${this.index}. ${this.name} (${this.type})`;\n }\n}\n\nexport default class WinAppDeployTool {\n private readonly path: string;\n\n constructor() {\n const programFilesPath =\n process.env['ProgramFiles(x86)'] || process.env.ProgramFiles;\n this.path = path.join(\n programFilesPath!,\n 'Windows Kits',\n '10',\n 'bin',\n 'x86',\n 'WinAppDeployCmd.exe',\n );\n }\n\n get isAvailable() {\n return fs.existsSync(this.path);\n }\n\n findDevice(target: string): DeviceInfo {\n const devices = this.enumerateDevices();\n\n if (devices.length === 0) {\n throw new CodedError('NoDevice', 'No devices found');\n }\n\n if (target === 'emulator') {\n const sortedList = devices.sort(sortDevices);\n for (const sortedItem of sortedList) {\n if (sortedItem.toString().includes(target)) {\n return sortedItem;\n }\n }\n }\n\n if (target === 'device') {\n return devices[0];\n }\n\n const candidateList = devices.filter((device) => device.guid === target);\n\n if (candidateList.length > 0) {\n return candidateList[0];\n } else {\n throw new CodedError('NoDevice', 'No devices found');\n }\n }\n\n enumerateDevices(): DeviceInfo[] {\n // 127.0.0.1 00000015-b21e-0da9-0000-000000000000 Lumia 1520 (RM-940)\\r\n // maps to\n // [(line), '127.0.0.1', '00000015-b21e-0da9-0000-000000000000', 'Lumia 1520 (RM-940)']\n // The expansion is: IP address, spaces, GUID, spaces, text name\n const LINE_TEST = /^([\\d\\.]+?)\\s+([\\da-fA-F\\-]+?)\\s+(.+)$/m; // eslint-disable-line no-useless-escape\n\n const result = execSync(`\"${this.path}\" devices`).toString();\n const lines = result.split('\\r\\n');\n const matchedLines = lines.filter((line) => LINE_TEST.test(line));\n\n const devices = matchedLines.map((line, arrayIndex) => {\n const match = line.match(LINE_TEST);\n if (!match) {\n throw new CodedError(\n 'InvalidDevicesOutput',\n 'Unexpected format of \"devices\" output',\n );\n }\n\n const ip = match[1];\n const guid = match[2];\n const name = match[3];\n const type = 'device';\n\n const deviceInfo = new DeviceInfo(name, guid, ip, arrayIndex, type);\n return deviceInfo;\n });\n\n return devices;\n }\n\n async installAppPackage(\n pathToAppxPackage: string,\n targetDevice: DeviceInfo,\n shouldLaunch: boolean,\n shouldUpdate: boolean,\n pin: boolean,\n verbose: boolean = false,\n ) {\n const text = `Installing app to ${targetDevice.name}`;\n\n if (shouldLaunch) {\n newWarn(\n 'Cannot launch app with current version of Windows 10 SDK tools. You will have to launch the app after installation is completed.',\n );\n }\n\n const args = [\n shouldUpdate ? 'update' : 'install',\n '-file',\n pathToAppxPackage,\n '-ip',\n targetDevice.ip,\n ];\n\n if (pin) {\n args.push('-pin', pin.toString());\n }\n await commandWithProgress(\n newSpinner(text),\n text,\n this.path,\n args,\n verbose,\n 'InstallAppToDeviceFailure',\n );\n }\n\n async uninstallAppPackage(\n appName: string,\n targetDevice: DeviceInfo,\n verbose: boolean,\n ) {\n const text = `Uninstalling app from ${targetDevice.name}`;\n await commandWithProgress(\n newSpinner(text),\n text,\n this.path,\n `uninstall -package ${appName} -ip {$targetDevice.ip}`.split(' '),\n verbose,\n 'UninstallAppOnDeviceFailure',\n );\n }\n}\n"]}
1
+ {"version":3,"file":"winappdeploytool.js","sourceRoot":"","sources":["../../../src/runWindows/utils/winappdeploytool.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport fs from '@react-native-windows/fs';\nimport path from 'path';\nimport {execSync} from 'child_process';\nimport {newSpinner, commandWithProgress, newWarn} from './commandWithProgress';\nimport {CodedError} from '@react-native-windows/telemetry';\n\nfunction sortDevices(l: DeviceInfo, r: DeviceInfo): number {\n return l.toString().length - r.toString().length;\n}\n\nclass DeviceInfo {\n constructor(\n public readonly name: string,\n public readonly guid: string,\n public readonly ip: string,\n\n private readonly index: number,\n private readonly type: string,\n ) {}\n\n toString() {\n return `${this.index}. ${this.name} (${this.type})`;\n }\n}\n\nexport default class WinAppDeployTool {\n private readonly path: string;\n\n constructor() {\n const programFilesPath =\n process.env['ProgramFiles(x86)'] || process.env.ProgramFiles;\n this.path = path.join(\n programFilesPath!,\n 'Windows Kits',\n '10',\n 'bin',\n 'x86',\n 'WinAppDeployCmd.exe',\n );\n }\n\n get isAvailable() {\n return fs.existsSync(this.path);\n }\n\n findDevice(target: string): DeviceInfo {\n const devices = this.enumerateDevices();\n\n if (devices.length === 0) {\n throw new CodedError('NoDevice', 'No devices found');\n }\n\n if (target === 'emulator') {\n const sortedList = devices.sort(sortDevices);\n for (const sortedItem of sortedList) {\n if (sortedItem.toString().includes(target)) {\n return sortedItem;\n }\n }\n }\n\n if (target === 'device') {\n return devices[0];\n }\n\n const candidateList = devices.filter(device => device.guid === target);\n\n if (candidateList.length > 0) {\n return candidateList[0];\n } else {\n throw new CodedError('NoDevice', 'No devices found');\n }\n }\n\n enumerateDevices(): DeviceInfo[] {\n // 127.0.0.1 00000015-b21e-0da9-0000-000000000000 Lumia 1520 (RM-940)\\r\n // maps to\n // [(line), '127.0.0.1', '00000015-b21e-0da9-0000-000000000000', 'Lumia 1520 (RM-940)']\n // The expansion is: IP address, spaces, GUID, spaces, text name\n const LINE_TEST = /^([\\d\\.]+?)\\s+([\\da-fA-F\\-]+?)\\s+(.+)$/m; // eslint-disable-line no-useless-escape\n\n const result = execSync(`\"${this.path}\" devices`).toString();\n const lines = result.split('\\r\\n');\n const matchedLines = lines.filter(line => LINE_TEST.test(line));\n\n const devices = matchedLines.map((line, arrayIndex) => {\n const match = line.match(LINE_TEST);\n if (!match) {\n throw new CodedError(\n 'InvalidDevicesOutput',\n 'Unexpected format of \"devices\" output',\n );\n }\n\n const ip = match[1];\n const guid = match[2];\n const name = match[3];\n const type = 'device';\n\n const deviceInfo = new DeviceInfo(name, guid, ip, arrayIndex, type);\n return deviceInfo;\n });\n\n return devices;\n }\n\n async installAppPackage(\n pathToAppxPackage: string,\n targetDevice: DeviceInfo,\n shouldLaunch: boolean,\n shouldUpdate: boolean,\n pin: boolean,\n verbose: boolean = false,\n ) {\n const text = `Installing app to ${targetDevice.name}`;\n\n if (shouldLaunch) {\n newWarn(\n 'Cannot launch app with current version of Windows 10 SDK tools. You will have to launch the app after installation is completed.',\n );\n }\n\n const args = [\n shouldUpdate ? 'update' : 'install',\n '-file',\n pathToAppxPackage,\n '-ip',\n targetDevice.ip,\n ];\n\n if (pin) {\n args.push('-pin', pin.toString());\n }\n await commandWithProgress(\n newSpinner(text),\n text,\n this.path,\n args,\n verbose,\n 'InstallAppToDeviceFailure',\n );\n }\n\n async uninstallAppPackage(\n appName: string,\n targetDevice: DeviceInfo,\n verbose: boolean,\n ) {\n const text = `Uninstalling app from ${targetDevice.name}`;\n await commandWithProgress(\n newSpinner(text),\n text,\n this.path,\n `uninstall -package ${appName} -ip {$targetDevice.ip}`.split(' '),\n verbose,\n 'UninstallAppOnDeviceFailure',\n );\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-native-windows/cli",
3
- "version": "0.68.2",
3
+ "version": "0.69.0",
4
4
  "license": "MIT",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "repository": {
@@ -17,9 +17,11 @@
17
17
  "watch": "rnw-scripts watch"
18
18
  },
19
19
  "dependencies": {
20
- "@react-native-windows/fs": "0.68.0",
21
- "@react-native-windows/package-utils": "0.68.0",
22
- "@react-native-windows/telemetry": "0.68.2",
20
+ "@react-native-windows/fs": "0.69.0",
21
+ "@react-native-windows/package-utils": "0.69.0",
22
+ "@react-native-windows/telemetry": "0.69.0",
23
+ "@typescript-eslint/eslint-plugin": "^5.20.0",
24
+ "@typescript-eslint/parser": "^5.20.0",
23
25
  "@xmldom/xmldom": "^0.7.5",
24
26
  "chalk": "^4.1.0",
25
27
  "cli-spinners": "^2.2.0",
@@ -40,10 +42,10 @@
40
42
  },
41
43
  "devDependencies": {
42
44
  "@react-native-community/cli-types": "^5.0.1-alpha.0",
43
- "@rnw-scripts/eslint-config": "1.1.10",
44
- "@rnw-scripts/jest-unittest-config": "1.2.5",
45
- "@rnw-scripts/just-task": "2.2.2",
46
- "@rnw-scripts/ts-config": "2.0.1",
45
+ "@rnw-scripts/eslint-config": "1.1.12",
46
+ "@rnw-scripts/jest-unittest-config": "1.2.6",
47
+ "@rnw-scripts/just-task": "2.2.3",
48
+ "@rnw-scripts/ts-config": "2.0.2",
47
49
  "@types/chalk": "^2.2.0",
48
50
  "@types/jest": "^26.0.20",
49
51
  "@types/lodash": "^4.14.168",