react-native-platform-override 0.81.2 → 0.81.4
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/Api.js +2 -2
- package/lib-commonjs/Api.js.map +1 -1
- package/lib-commonjs/FileSearch.js +5 -5
- package/lib-commonjs/FileSearch.js.map +1 -1
- package/lib-commonjs/FileSystemRepository.js +6 -6
- package/lib-commonjs/FileSystemRepository.js.map +1 -1
- package/lib-commonjs/GitReactFileRepository.js +4 -27
- package/lib-commonjs/GitReactFileRepository.js.map +1 -1
- package/lib-commonjs/PackageUtils.js +2 -2
- package/lib-commonjs/PackageUtils.js.map +1 -1
- package/lib-commonjs/Serialized.js +4 -4
- package/lib-commonjs/Serialized.js.map +1 -1
- package/lib-commonjs/scripts/hashFile.js +2 -2
- package/lib-commonjs/scripts/hashFile.js.map +1 -1
- package/package.json +7 -10
package/lib-commonjs/Api.js
CHANGED
|
@@ -40,7 +40,7 @@ exports.upgradeOverrides = exports.diffOverride = exports.addOverride = exports.
|
|
|
40
40
|
/* eslint-disable @typescript-eslint/no-misused-promises */
|
|
41
41
|
const Serialized = __importStar(require("./Serialized"));
|
|
42
42
|
const lodash_1 = __importDefault(require("lodash"));
|
|
43
|
-
const
|
|
43
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
44
44
|
const path_1 = __importDefault(require("path"));
|
|
45
45
|
const OverrideFactory_1 = require("./OverrideFactory");
|
|
46
46
|
const FileRepository_1 = require("./FileRepository");
|
|
@@ -158,7 +158,7 @@ exports.upgradeOverrides = upgradeOverrides;
|
|
|
158
158
|
*/
|
|
159
159
|
async function checkFileExists(friendlyName, filePath) {
|
|
160
160
|
try {
|
|
161
|
-
await
|
|
161
|
+
await promises_1.default.access(filePath);
|
|
162
162
|
}
|
|
163
163
|
catch (ex) {
|
|
164
164
|
throw new Error(`Could not find ${friendlyName} at path '${filePath}'`);
|
package/lib-commonjs/Api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Api.js","sourceRoot":"","sources":["../src/Api.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * @format\n */\n\n// Typings for \"async\" confuse this rule\n/* eslint-disable @typescript-eslint/no-misused-promises */\n\nimport * as Serialized from './Serialized';\nimport _ from 'lodash';\nimport fs from '@react-native-windows/fs';\nimport path from 'path';\n\nimport OverrideFactory, {OverrideFactoryImpl} from './OverrideFactory';\nimport {\n ReactFileRepository,\n WritableFileRepository,\n bindVersion,\n} from './FileRepository';\nimport {eachLimit, mapLimit} from 'async';\nimport FileSystemRepository from './FileSystemRepository';\nimport GitReactFileRepository from './GitReactFileRepository';\nimport Manifest from './Manifest';\nimport Override from './Override';\nimport {UpgradeResult} from './UpgradeStrategy';\nimport {ValidationError} from './ValidationStrategy';\nimport {getInstalledRNVersion} from './PackageUtils';\n\n// Re-export types used in the public API so external packages don't have to\n// reach into our guts to import them.\nexport * from './OverrideFactory';\nexport * from './Override';\nexport * from './refFromVersion';\nexport {UpgradeResult, ValidationError};\n\nconst MAX_CONCURRENT_TASKS = 30;\n\n/**\n * Check that the given manifest correctly describe overrides and that all\n * overrides are up to date\n */\nexport async function validateManifest(\n manifestPath: string,\n opts?: {\n reactNativeVersion?: string;\n },\n): Promise<ValidationError[]> {\n const {manifest, overrideRepo, reactRepo} = await createManifestContext(\n manifestPath,\n opts,\n );\n return await manifest.validate(overrideRepo, reactRepo);\n}\n\n/**\n * Return whether the override exists in the manifest\n */\nexport async function hasOverride(\n overrideName: string,\n manifestPath: string,\n): Promise<boolean> {\n const {manifest} = await createManifestContext(manifestPath);\n return manifest.hasOverride(overrideName);\n}\n\n/**\n * Removes an override from the manifest if it exists.\n * @returns whether the override was removed\n */\nexport async function removeOverride(\n overrideName: string,\n manifestPath: string,\n): Promise<boolean> {\n const {manifest} = await createManifestContext(manifestPath);\n const removed = manifest.removeOverride(overrideName);\n if (removed) {\n await Serialized.writeManifestToFile(manifest.serialize(), manifestPath);\n }\n\n return removed;\n}\n\n/**\n * Returns a factory to create overrides which may be added to the manifest\n */\nexport async function getOverrideFactory(\n manifestPath: string,\n opts?: {\n reactNativeVersion?: string;\n },\n): Promise<OverrideFactory> {\n return (await createManifestContext(manifestPath, opts)).overrideFactory;\n}\n\n/**\n * Adds an override to the manifest\n */\nexport async function addOverride(\n override: Override,\n manifestPath: string,\n): Promise<void> {\n const {manifest} = await createManifestContext(manifestPath);\n manifest.addOverride(override);\n await Serialized.writeManifestToFile(manifest.serialize(), manifestPath);\n}\n\n/**\n * Outputs a patch-style diff of an override compared to its original source\n */\nexport async function diffOverride(\n overrideName: string,\n manifestPath: string,\n): Promise<string> {\n const ctx = await createManifestContext(manifestPath);\n\n const override = ctx.manifest.findOverride(overrideName);\n if (!override) {\n throw new Error(`Could not find override with name \"${overrideName}\"`);\n }\n\n return override.diffStrategy().diff(ctx.gitReactRepo, ctx.overrideRepo);\n}\n\n/**\n * Receives notifications on progress during override upgrades\n */\nexport type UpgradeProgressListener = (\n currentOverride: number,\n totalOverrides: number,\n) => void;\n\n/**\n * Attempts to automatically merge changes from the current version into\n * out-of-date overrides.\n */\nexport async function upgradeOverrides(\n manifestPath: string,\n opts: {\n allowConflicts: boolean;\n reactNativeVersion?: string;\n progressListener?: UpgradeProgressListener;\n },\n): Promise<UpgradeResult[]> {\n const ctx = await createManifestContext(manifestPath, opts);\n\n const validationErrors = await ctx.manifest.validate(\n ctx.overrideRepo,\n ctx.reactRepo,\n );\n\n const outOfDateOverrides = validationErrors\n .filter(err => err.type === 'outOfDate')\n .map(err => ctx.manifest.findOverride(err.overrideName)!);\n\n // Perform upgrades concurrently so we can take advantage of\n // GitReactFileRepository optimizations when multiple requests are queued at\n // once.\n let i = 0;\n const upgradeResults = await mapLimit<Override, UpgradeResult>(\n outOfDateOverrides,\n MAX_CONCURRENT_TASKS,\n async (override: any) => {\n const upgradeResult = await override\n .upgradeStrategy()\n .upgrade(\n ctx.gitReactRepo,\n ctx.overrideRepo,\n ctx.reactNativeVersion,\n opts.allowConflicts,\n );\n\n if (opts.progressListener) {\n opts.progressListener(++i, outOfDateOverrides.length);\n }\n\n return upgradeResult;\n },\n );\n\n // Regenerate overrides that are already up to date to update the baseVersion\n // to current. This helps to minimize the numbers of versions we have to\n // check out for future upgrades.\n const upToDateOverrides = [\n ..._.difference(\n ctx.manifest.listOverrides(),\n validationErrors.map(err => ctx.manifest.findOverride(err.overrideName)!),\n ).map(ovr => ovr.name()),\n\n ...upgradeResults\n .filter(res => res.filesWritten)\n .map(res => res.overrideName),\n ];\n\n await eachLimit(upToDateOverrides, MAX_CONCURRENT_TASKS, async name => {\n await ctx.manifest.markUpToDate(name, ctx.overrideFactory);\n });\n\n ctx.manifest.setBaseVersion(ctx.reactNativeVersion);\n await Serialized.writeManifestToFile(ctx.manifest.serialize(), manifestPath);\n\n return upgradeResults.sort((a, b) =>\n a.overrideName.localeCompare(b.overrideName, 'en'),\n );\n}\n\n/**\n * Throw if a file doesn't exist, printing an error message on the way\n */\nasync function checkFileExists(friendlyName: string, filePath: string) {\n try {\n await fs.access(filePath);\n } catch (ex) {\n throw new Error(`Could not find ${friendlyName} at path '${filePath}'`);\n }\n}\n\n/**\n * Context describing state centered around a single manifest\n */\ninterface ManifestContext {\n overrideRepo: WritableFileRepository;\n reactRepo: ReactFileRepository;\n gitReactRepo: GitReactFileRepository;\n overrideFactory: OverrideFactory;\n manifest: Manifest;\n reactNativeVersion: string;\n}\n\n/**\n * Sets up state for a manifest describing overrides at a specified RN version\n */\nasync function createManifestContext(\n manifestPath: string,\n opts?: {\n reactNativeVersion?: string;\n },\n): Promise<ManifestContext> {\n await checkFileExists('manifest', manifestPath);\n const reactNativeVersion =\n opts?.reactNativeVersion || (await getInstalledRNVersion());\n\n const overrideDir = path.dirname(manifestPath);\n const overrideRepo = new FileSystemRepository(overrideDir);\n\n const gitReactRepo = await GitReactFileRepository.createAndInit();\n const reactRepo = bindVersion(gitReactRepo, reactNativeVersion);\n\n const overrideFactory = new OverrideFactoryImpl(reactRepo, overrideRepo);\n const manifest = Manifest.fromSerialized(\n await Serialized.readManifestFromFile(manifestPath),\n );\n\n return {\n overrideRepo,\n reactRepo,\n gitReactRepo,\n overrideFactory,\n manifest,\n reactNativeVersion,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Api.js","sourceRoot":"","sources":["../src/Api.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * @format\n */\n\n// Typings for \"async\" confuse this rule\n/* eslint-disable @typescript-eslint/no-misused-promises */\n\nimport * as Serialized from './Serialized';\nimport _ from 'lodash';\nimport fs from 'node:fs/promises';\nimport path from 'path';\n\nimport OverrideFactory, {OverrideFactoryImpl} from './OverrideFactory';\nimport {\n ReactFileRepository,\n WritableFileRepository,\n bindVersion,\n} from './FileRepository';\nimport {eachLimit, mapLimit} from 'async';\nimport FileSystemRepository from './FileSystemRepository';\nimport GitReactFileRepository from './GitReactFileRepository';\nimport Manifest from './Manifest';\nimport Override from './Override';\nimport {UpgradeResult} from './UpgradeStrategy';\nimport {ValidationError} from './ValidationStrategy';\nimport {getInstalledRNVersion} from './PackageUtils';\n\n// Re-export types used in the public API so external packages don't have to\n// reach into our guts to import them.\nexport * from './OverrideFactory';\nexport * from './Override';\nexport * from './refFromVersion';\nexport {UpgradeResult, ValidationError};\n\nconst MAX_CONCURRENT_TASKS = 30;\n\n/**\n * Check that the given manifest correctly describe overrides and that all\n * overrides are up to date\n */\nexport async function validateManifest(\n manifestPath: string,\n opts?: {\n reactNativeVersion?: string;\n },\n): Promise<ValidationError[]> {\n const {manifest, overrideRepo, reactRepo} = await createManifestContext(\n manifestPath,\n opts,\n );\n return await manifest.validate(overrideRepo, reactRepo);\n}\n\n/**\n * Return whether the override exists in the manifest\n */\nexport async function hasOverride(\n overrideName: string,\n manifestPath: string,\n): Promise<boolean> {\n const {manifest} = await createManifestContext(manifestPath);\n return manifest.hasOverride(overrideName);\n}\n\n/**\n * Removes an override from the manifest if it exists.\n * @returns whether the override was removed\n */\nexport async function removeOverride(\n overrideName: string,\n manifestPath: string,\n): Promise<boolean> {\n const {manifest} = await createManifestContext(manifestPath);\n const removed = manifest.removeOverride(overrideName);\n if (removed) {\n await Serialized.writeManifestToFile(manifest.serialize(), manifestPath);\n }\n\n return removed;\n}\n\n/**\n * Returns a factory to create overrides which may be added to the manifest\n */\nexport async function getOverrideFactory(\n manifestPath: string,\n opts?: {\n reactNativeVersion?: string;\n },\n): Promise<OverrideFactory> {\n return (await createManifestContext(manifestPath, opts)).overrideFactory;\n}\n\n/**\n * Adds an override to the manifest\n */\nexport async function addOverride(\n override: Override,\n manifestPath: string,\n): Promise<void> {\n const {manifest} = await createManifestContext(manifestPath);\n manifest.addOverride(override);\n await Serialized.writeManifestToFile(manifest.serialize(), manifestPath);\n}\n\n/**\n * Outputs a patch-style diff of an override compared to its original source\n */\nexport async function diffOverride(\n overrideName: string,\n manifestPath: string,\n): Promise<string> {\n const ctx = await createManifestContext(manifestPath);\n\n const override = ctx.manifest.findOverride(overrideName);\n if (!override) {\n throw new Error(`Could not find override with name \"${overrideName}\"`);\n }\n\n return override.diffStrategy().diff(ctx.gitReactRepo, ctx.overrideRepo);\n}\n\n/**\n * Receives notifications on progress during override upgrades\n */\nexport type UpgradeProgressListener = (\n currentOverride: number,\n totalOverrides: number,\n) => void;\n\n/**\n * Attempts to automatically merge changes from the current version into\n * out-of-date overrides.\n */\nexport async function upgradeOverrides(\n manifestPath: string,\n opts: {\n allowConflicts: boolean;\n reactNativeVersion?: string;\n progressListener?: UpgradeProgressListener;\n },\n): Promise<UpgradeResult[]> {\n const ctx = await createManifestContext(manifestPath, opts);\n\n const validationErrors = await ctx.manifest.validate(\n ctx.overrideRepo,\n ctx.reactRepo,\n );\n\n const outOfDateOverrides = validationErrors\n .filter(err => err.type === 'outOfDate')\n .map(err => ctx.manifest.findOverride(err.overrideName)!);\n\n // Perform upgrades concurrently so we can take advantage of\n // GitReactFileRepository optimizations when multiple requests are queued at\n // once.\n let i = 0;\n const upgradeResults = await mapLimit<Override, UpgradeResult>(\n outOfDateOverrides,\n MAX_CONCURRENT_TASKS,\n async (override: any) => {\n const upgradeResult = await override\n .upgradeStrategy()\n .upgrade(\n ctx.gitReactRepo,\n ctx.overrideRepo,\n ctx.reactNativeVersion,\n opts.allowConflicts,\n );\n\n if (opts.progressListener) {\n opts.progressListener(++i, outOfDateOverrides.length);\n }\n\n return upgradeResult;\n },\n );\n\n // Regenerate overrides that are already up to date to update the baseVersion\n // to current. This helps to minimize the numbers of versions we have to\n // check out for future upgrades.\n const upToDateOverrides = [\n ..._.difference(\n ctx.manifest.listOverrides(),\n validationErrors.map(err => ctx.manifest.findOverride(err.overrideName)!),\n ).map(ovr => ovr.name()),\n\n ...upgradeResults\n .filter(res => res.filesWritten)\n .map(res => res.overrideName),\n ];\n\n await eachLimit(upToDateOverrides, MAX_CONCURRENT_TASKS, async name => {\n await ctx.manifest.markUpToDate(name, ctx.overrideFactory);\n });\n\n ctx.manifest.setBaseVersion(ctx.reactNativeVersion);\n await Serialized.writeManifestToFile(ctx.manifest.serialize(), manifestPath);\n\n return upgradeResults.sort((a, b) =>\n a.overrideName.localeCompare(b.overrideName, 'en'),\n );\n}\n\n/**\n * Throw if a file doesn't exist, printing an error message on the way\n */\nasync function checkFileExists(friendlyName: string, filePath: string) {\n try {\n await fs.access(filePath);\n } catch (ex) {\n throw new Error(`Could not find ${friendlyName} at path '${filePath}'`);\n }\n}\n\n/**\n * Context describing state centered around a single manifest\n */\ninterface ManifestContext {\n overrideRepo: WritableFileRepository;\n reactRepo: ReactFileRepository;\n gitReactRepo: GitReactFileRepository;\n overrideFactory: OverrideFactory;\n manifest: Manifest;\n reactNativeVersion: string;\n}\n\n/**\n * Sets up state for a manifest describing overrides at a specified RN version\n */\nasync function createManifestContext(\n manifestPath: string,\n opts?: {\n reactNativeVersion?: string;\n },\n): Promise<ManifestContext> {\n await checkFileExists('manifest', manifestPath);\n const reactNativeVersion =\n opts?.reactNativeVersion || (await getInstalledRNVersion());\n\n const overrideDir = path.dirname(manifestPath);\n const overrideRepo = new FileSystemRepository(overrideDir);\n\n const gitReactRepo = await GitReactFileRepository.createAndInit();\n const reactRepo = bindVersion(gitReactRepo, reactNativeVersion);\n\n const overrideFactory = new OverrideFactoryImpl(reactRepo, overrideRepo);\n const manifest = Manifest.fromSerialized(\n await Serialized.readManifestFromFile(manifestPath),\n );\n\n return {\n overrideRepo,\n reactRepo,\n gitReactRepo,\n overrideFactory,\n manifest,\n reactNativeVersion,\n };\n}\n"]}
|
|
@@ -10,7 +10,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.findThisPackage = exports.findAllManifests = exports.findManifest = void 0;
|
|
13
|
-
const
|
|
13
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
14
14
|
const path_1 = __importDefault(require("path"));
|
|
15
15
|
const package_utils_1 = require("@react-native-windows/package-utils");
|
|
16
16
|
/**
|
|
@@ -23,7 +23,7 @@ async function findManifest(cwd) {
|
|
|
23
23
|
throw new Error('This command must be run within a package');
|
|
24
24
|
}
|
|
25
25
|
const manifestPath = path_1.default.join(path_1.default.dirname(packagePath), 'overrides.json');
|
|
26
|
-
if (!
|
|
26
|
+
if (!node_fs_1.default.existsSync(manifestPath)) {
|
|
27
27
|
throw new Error('Expected an "overrides.json" file at the root of the current package');
|
|
28
28
|
}
|
|
29
29
|
return manifestPath;
|
|
@@ -40,10 +40,10 @@ async function findAllManifests() {
|
|
|
40
40
|
throw new Error('This command must be run within a package');
|
|
41
41
|
}
|
|
42
42
|
const packageDir = path_1.default.dirname(packagePath);
|
|
43
|
-
if (
|
|
43
|
+
if (node_fs_1.default.existsSync(path_1.default.join(packageDir, 'overrides.json'))) {
|
|
44
44
|
return [path_1.default.join(packageDir, 'overrides.json')];
|
|
45
45
|
}
|
|
46
|
-
const localPackages = await (0, package_utils_1.enumerateRepoPackages)(pkg =>
|
|
46
|
+
const localPackages = await (0, package_utils_1.enumerateRepoPackages)(async (pkg) => node_fs_1.default.existsSync(path_1.default.join(pkg.path, 'overrides.json')));
|
|
47
47
|
return localPackages.map(pkg => path_1.default.join(pkg.path, 'overrides.json'));
|
|
48
48
|
}
|
|
49
49
|
exports.findAllManifests = findAllManifests;
|
|
@@ -64,7 +64,7 @@ exports.findThisPackage = findThisPackage;
|
|
|
64
64
|
async function findFileAbove(base, target) {
|
|
65
65
|
const searchPath = path_1.default.resolve(base);
|
|
66
66
|
const fullPath = path_1.default.join(searchPath, target);
|
|
67
|
-
if (
|
|
67
|
+
if (node_fs_1.default.existsSync(fullPath)) {
|
|
68
68
|
return fullPath;
|
|
69
69
|
}
|
|
70
70
|
const searchPathParent = path_1.default.resolve(path_1.default.join(searchPath, '..'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileSearch.js","sourceRoot":"","sources":["../src/FileSearch.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"FileSearch.js","sourceRoot":"","sources":["../src/FileSearch.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,sDAAyB;AACzB,gDAAwB;AACxB,uEAA0E;AAE1E;;;GAGG;AACI,KAAK,UAAU,YAAY,CAAC,GAAY;IAC7C,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IAC9E,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAC9D;IAED,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,cAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC5E,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;QAChC,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;KACH;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAdD,oCAcC;AAED;;;;GAIG;AACI,KAAK,UAAU,gBAAgB;IACpC,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IACvE,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAC9D;IAED,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,iBAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,EAAE;QAC1D,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;KAClD;IAED,MAAM,aAAa,GAAG,MAAM,IAAA,qCAAqB,EAAC,KAAK,EAAC,GAAG,EAAC,EAAE,CAC5D,iBAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CACrD,CAAC;IAEF,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;AACzE,CAAC;AAhBD,4CAgBC;AAED;;GAEG;AACI,KAAK,UAAU,eAAe;IACnC,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACvE,IAAI,CAAC,eAAe,EAAE;QACpB,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;KACH;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AATD,0CASC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAC1B,IAAY,EACZ,MAAc;IAEd,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,iBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC3B,OAAO,QAAQ,CAAC;KACjB;IAED,MAAM,gBAAgB,GAAG,cAAI,CAAC,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IACnE,IAAI,gBAAgB,KAAK,UAAU,EAAE;QACnC,OAAO,IAAI,CAAC;KACb;SAAM;QACL,OAAO,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;KAChD;AACH,CAAC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * @format\n */\n\nimport fs from 'node:fs';\nimport path from 'path';\nimport {enumerateRepoPackages} from '@react-native-windows/package-utils';\n\n/**\n * Search for a single manifest adjacent to the package above a directory or\n * CWD\n */\nexport async function findManifest(cwd?: string): Promise<string> {\n const packagePath = await findFileAbove(cwd || process.cwd(), 'package.json');\n if (!packagePath) {\n throw new Error('This command must be run within a package');\n }\n\n const manifestPath = path.join(path.dirname(packagePath), 'overrides.json');\n if (!fs.existsSync(manifestPath)) {\n throw new Error(\n 'Expected an \"overrides.json\" file at the root of the current package',\n );\n }\n\n return manifestPath;\n}\n\n/**\n * Enumerate the override manifests reachable from CWD, preferring the local\n * package if run within a package with an override manifest, otherwise\n * searching for packages in a monorepo\n */\nexport async function findAllManifests(): Promise<string[]> {\n const packagePath = await findFileAbove(process.cwd(), 'package.json');\n if (!packagePath) {\n throw new Error('This command must be run within a package');\n }\n\n const packageDir = path.dirname(packagePath);\n if (fs.existsSync(path.join(packageDir, 'overrides.json'))) {\n return [path.join(packageDir, 'overrides.json')];\n }\n\n const localPackages = await enumerateRepoPackages(async pkg =>\n fs.existsSync(path.join(pkg.path, 'overrides.json')),\n );\n\n return localPackages.map(pkg => path.join(pkg.path, 'overrides.json'));\n}\n\n/**\n * Search for the package.json for this package (react-native-platform-override)\n */\nexport async function findThisPackage(): Promise<string> {\n const thisPackagePath = await findFileAbove(__dirname, 'package.json');\n if (!thisPackagePath) {\n throw new Error(\n 'Unable to find a package.json about our source code. Did directory structure change?',\n );\n }\n\n return thisPackagePath;\n}\n\n/**\n * Search for the target path segment in all directories above the base\n */\nasync function findFileAbove(\n base: string,\n target: string,\n): Promise<string | null> {\n const searchPath = path.resolve(base);\n const fullPath = path.join(searchPath, target);\n if (fs.existsSync(fullPath)) {\n return fullPath;\n }\n\n const searchPathParent = path.resolve(path.join(searchPath, '..'));\n if (searchPathParent === searchPath) {\n return null;\n } else {\n return findFileAbove(searchPathParent, target);\n }\n}\n"]}
|
|
@@ -9,7 +9,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
9
9
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const
|
|
12
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
13
13
|
const globby_1 = __importDefault(require("globby"));
|
|
14
14
|
const path_1 = __importDefault(require("path"));
|
|
15
15
|
/**
|
|
@@ -28,7 +28,7 @@ class FileSystemRepository {
|
|
|
28
28
|
async readFile(filename) {
|
|
29
29
|
const filePath = path_1.default.join(this.baseDir, filename);
|
|
30
30
|
try {
|
|
31
|
-
return await
|
|
31
|
+
return await promises_1.default.readFile(filePath);
|
|
32
32
|
}
|
|
33
33
|
catch {
|
|
34
34
|
return null;
|
|
@@ -37,7 +37,7 @@ class FileSystemRepository {
|
|
|
37
37
|
async stat(filename) {
|
|
38
38
|
const filePath = path_1.default.join(this.baseDir, filename);
|
|
39
39
|
try {
|
|
40
|
-
const stats = await
|
|
40
|
+
const stats = await promises_1.default.stat(filePath);
|
|
41
41
|
return stats.isDirectory() ? 'directory' : 'file';
|
|
42
42
|
}
|
|
43
43
|
catch (ex) {
|
|
@@ -51,12 +51,12 @@ class FileSystemRepository {
|
|
|
51
51
|
}
|
|
52
52
|
async writeFile(filename, content) {
|
|
53
53
|
const filePath = path_1.default.join(this.baseDir, filename);
|
|
54
|
-
await
|
|
55
|
-
return
|
|
54
|
+
await promises_1.default.mkdir(path_1.default.dirname(filePath), { recursive: true });
|
|
55
|
+
return promises_1.default.writeFile(filePath, content);
|
|
56
56
|
}
|
|
57
57
|
async deleteFile(filename) {
|
|
58
58
|
const filePath = path_1.default.join(this.baseDir, filename);
|
|
59
|
-
await
|
|
59
|
+
await promises_1.default.unlink(filePath);
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
exports.default = FileSystemRepository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileSystemRepository.js","sourceRoot":"","sources":["../src/FileSystemRepository.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"FileSystemRepository.js","sourceRoot":"","sources":["../src/FileSystemRepository.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAEH,gEAAkC;AAClC,oDAA4B;AAC5B,gDAAwB;AAIxB;;GAEG;AACH,MAAqB,oBAAoB;IAGvC,YAAY,OAAe;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAkB,CAAC,IAAI,CAAC;QACtC,OAAO,MAAM,IAAA,gBAAM,EAAC,KAAK,EAAE;YACzB,GAAG,EAAE,IAAI,CAAC,OAAO;YACjB,GAAG,EAAE,IAAI;SACV,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI;YACF,OAAO,MAAM,kBAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SACpC;QAAC,MAAM;YACN,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAgB;QACzB,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,kBAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;SACnD;QAAC,OAAO,EAAE,EAAE;YACX,IAAK,EAA4B,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACnD,OAAO,MAAM,CAAC;aACf;iBAAM;gBACL,MAAM,EAAE,CAAC;aACV;SACF;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,OAAwB;QACxD,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,kBAAE,CAAC,KAAK,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;QAC1D,OAAO,kBAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB;QAC/B,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,kBAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;CACF;AA/CD,uCA+CC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * @format\n */\n\nimport fs from 'node:fs/promises';\nimport globby from 'globby';\nimport path from 'path';\n\nimport {WritableFileRepository} from './FileRepository';\n\n/**\n * Allows reading physical files based on a passed in directory\n */\nexport default class FileSystemRepository implements WritableFileRepository {\n private readonly baseDir: string;\n\n constructor(baseDir: string) {\n this.baseDir = baseDir;\n }\n\n async listFiles(globs: string[] = ['**']): Promise<string[]> {\n return await globby(globs, {\n cwd: this.baseDir,\n dot: true,\n });\n }\n\n async readFile(filename: string): Promise<Buffer | null> {\n const filePath = path.join(this.baseDir, filename);\n try {\n return await fs.readFile(filePath);\n } catch {\n return null;\n }\n }\n\n async stat(filename: string): Promise<'file' | 'directory' | 'none'> {\n const filePath = path.join(this.baseDir, filename);\n try {\n const stats = await fs.stat(filePath);\n return stats.isDirectory() ? 'directory' : 'file';\n } catch (ex) {\n if ((ex as NodeJS.ErrnoException).code === 'ENOENT') {\n return 'none';\n } else {\n throw ex;\n }\n }\n }\n\n async writeFile(filename: string, content: Buffer | string) {\n const filePath = path.join(this.baseDir, filename);\n await fs.mkdir(path.dirname(filePath), {recursive: true});\n return fs.writeFile(filePath, content);\n }\n\n async deleteFile(filename: string): Promise<void> {\n const filePath = path.join(this.baseDir, filename);\n await fs.unlink(filePath);\n }\n}\n"]}
|
|
@@ -5,37 +5,14 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @format
|
|
7
7
|
*/
|
|
8
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
-
if (k2 === undefined) k2 = k;
|
|
10
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
-
}
|
|
14
|
-
Object.defineProperty(o, k2, desc);
|
|
15
|
-
}) : (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === undefined) k2 = k;
|
|
17
|
-
o[k2] = m[k];
|
|
18
|
-
}));
|
|
19
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
-
}) : function(o, v) {
|
|
22
|
-
o["default"] = v;
|
|
23
|
-
});
|
|
24
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
-
if (mod && mod.__esModule) return mod;
|
|
26
|
-
var result = {};
|
|
27
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
-
__setModuleDefault(result, mod);
|
|
29
|
-
return result;
|
|
30
|
-
};
|
|
31
8
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
32
9
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
33
10
|
};
|
|
34
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
const
|
|
12
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
36
13
|
const os_1 = __importDefault(require("os"));
|
|
37
14
|
const path_1 = __importDefault(require("path"));
|
|
38
|
-
const simple_git_1 =
|
|
15
|
+
const simple_git_1 = require("simple-git");
|
|
39
16
|
const BatchingQueue_1 = __importDefault(require("./BatchingQueue"));
|
|
40
17
|
const FileSystemRepository_1 = __importDefault(require("./FileSystemRepository"));
|
|
41
18
|
const PackageUtils_1 = require("./PackageUtils");
|
|
@@ -57,8 +34,8 @@ class GitReactFileRepository {
|
|
|
57
34
|
*/
|
|
58
35
|
static async createAndInit(gitDirectory) {
|
|
59
36
|
const dir = gitDirectory || (await this.defaultGitDirectory());
|
|
60
|
-
await
|
|
61
|
-
const gitClient = (0, simple_git_1.
|
|
37
|
+
await promises_1.default.mkdir(dir, { recursive: true });
|
|
38
|
+
const gitClient = (0, simple_git_1.simpleGit)(dir);
|
|
62
39
|
if (!(await gitClient.checkIsRepo())) {
|
|
63
40
|
await gitClient.init();
|
|
64
41
|
await gitClient.addConfig('core.autocrlf', 'input');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitReactFileRepository.js","sourceRoot":"","sources":["../src/GitReactFileRepository.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * @format\n */\n\nimport fs from '@react-native-windows/fs';\nimport os from 'os';\nimport path from 'path';\nimport simplegit, {SimpleGit, ResetMode} from 'simple-git';\n\nimport BatchingQueue from './BatchingQueue';\nimport FileSystemRepository from './FileSystemRepository';\nimport {VersionedReactFileRepository} from './FileRepository';\nimport {getNpmPackage} from './PackageUtils';\nimport {fetchFullRef} from './refFromVersion';\n\nconst RN_GITHUB_URL = 'https://github.com/facebook/react-native.git';\n\n/**\n * Retrieves React Native files using the React Native Github repo. Switching\n * between getting file contents of different versions may be slow.\n */\nexport default class GitReactFileRepository\n implements VersionedReactFileRepository\n{\n private readonly fileRepo: FileSystemRepository;\n private readonly gitClient: SimpleGit;\n private checkedOutVersion?: string;\n private static githubToken?: string;\n\n // We need to ensure it is impossible to check out a new React Native\n // version while an operation hasn't yet finished. We queue each operation to\n // ensure they are performed atomically.\n private readonly batchingQueue: BatchingQueue<string>;\n\n private constructor(gitDirectory: string, gitClient: SimpleGit) {\n this.batchingQueue = new BatchingQueue();\n this.fileRepo = new FileSystemRepository(gitDirectory);\n this.gitClient = gitClient;\n }\n\n /**\n * Asynchronously initialize the scratch repository, creating a new Git repo is needed\n * @param gitDirectory optional repo directory\n */\n static async createAndInit(\n gitDirectory?: string,\n ): Promise<GitReactFileRepository> {\n const dir = gitDirectory || (await this.defaultGitDirectory());\n await fs.mkdir(dir, {recursive: true});\n\n const gitClient = simplegit(dir);\n\n if (!(await gitClient.checkIsRepo())) {\n await gitClient.init();\n await gitClient.addConfig('core.autocrlf', 'input');\n await gitClient.addConfig('core.filemode', 'false');\n await gitClient.addConfig('core.ignorecase', 'true');\n }\n\n return new GitReactFileRepository(dir, gitClient);\n }\n\n /**\n * Set a GitHub API token for all instances of GitReactFileRepository to use\n * when making requests.\n * @param token a GitHub PAT\n */\n static setGithubToken(token: string) {\n GitReactFileRepository.githubToken = token;\n }\n\n async listFiles(\n globs: string[] | undefined,\n reactNativeVersion: string,\n ): Promise<string[]> {\n return this.usingVersion(reactNativeVersion, () =>\n this.fileRepo.listFiles(globs),\n );\n }\n\n async readFile(\n filename: string,\n reactNativeVersion: string,\n ): Promise<Buffer | null> {\n return this.usingVersion(reactNativeVersion, () =>\n this.fileRepo.readFile(filename),\n );\n }\n\n async stat(\n filename: string,\n reactNativeVersion: string,\n ): Promise<'file' | 'directory' | 'none'> {\n return this.usingVersion(reactNativeVersion, () =>\n this.fileRepo.stat(filename),\n );\n }\n\n /**\n * Generate a Git-style patch to transform the given file into the given\n * content.\n */\n async generatePatch(\n filename: string,\n reactNativeVersion: string,\n newContent: Buffer,\n ): Promise<string> {\n return this.usingVersion(reactNativeVersion, async () => {\n await this.ensureFile(filename);\n\n try {\n await this.fileRepo.writeFile(filename, newContent);\n const patch = await this.gitClient.diff([\n '--patch',\n '--ignore-space-at-eol',\n '--binary',\n '--',\n filename,\n ]);\n\n return patch;\n } finally {\n await this.gitClient.reset(ResetMode.HARD);\n }\n });\n }\n\n /**\n * Apply a patch to the given file, returning the merged result, which may\n * include conflict markers. The underlying file is not mutated.\n *\n * Git is unable to generate a representation with conflict markers in the\n * event of binary merge conflicts. In this case a null Buffer is returned.\n */\n async getPatchedFile(\n filename: string,\n reactNativeVersion: string,\n patchContent: string,\n ): Promise<{patchedFile: Buffer | null; hasConflicts: boolean}> {\n return this.usingVersion(reactNativeVersion, async () => {\n await this.ensureFile(filename);\n\n try {\n await this.fileRepo.writeFile('rnwgit.patch', patchContent);\n\n let hasConflicts = false;\n let binaryConflicts = false;\n\n try {\n await this.gitClient.raw([\n 'apply',\n '--3way',\n '--whitespace=nowarn',\n 'rnwgit.patch',\n ]);\n } catch (ex) {\n // Hack alert: simple-git doesn't populate exception information from\n // conflicts when we're using raw commands (which we need to since it\n // doesn't support apply). Try to detect if Git gave us a bad exit code\n // because of merge conflicts, which we explicitly want to allow.\n if (!(ex as Error).message.includes('with conflicts')) {\n throw ex;\n }\n\n hasConflicts = true;\n binaryConflicts = (ex as Error).message.includes(\n 'Cannot merge binary files',\n );\n }\n\n const patchedFile = binaryConflicts\n ? null\n : await this.fileRepo.readFile(filename);\n\n return {patchedFile, hasConflicts};\n } finally {\n await this.gitClient.reset(ResetMode.HARD);\n }\n });\n }\n\n private async usingVersion<T>(\n reactNativeVersion: string,\n fn: () => Promise<T>,\n ): Promise<T> {\n return await this.batchingQueue.enqueue(reactNativeVersion, async () => {\n await this.checkoutVersion(reactNativeVersion);\n return await fn();\n });\n }\n\n private async checkoutVersion(reactNativeVersion: string) {\n if (reactNativeVersion !== this.checkedOutVersion) {\n if (!(await this.tryCheckoutLocal(reactNativeVersion))) {\n await this.fetchAndCheckout(reactNativeVersion);\n }\n\n this.checkedOutVersion = reactNativeVersion;\n }\n }\n\n private async tryCheckoutLocal(reactNativeVersion: string): Promise<boolean> {\n try {\n await this.gitClient.checkout([reactNativeVersion, '--force']);\n return true;\n } catch {\n return false;\n }\n }\n\n private async fetchAndCheckout(reactNativeVersion: string) {\n const githubToken =\n GitReactFileRepository.githubToken ||\n process.env.PLATFORM_OVERRIDE_GITHUB_TOKEN;\n const gitRef = await fetchFullRef(reactNativeVersion, {githubToken});\n\n try {\n await this.gitClient.fetch([RN_GITHUB_URL, gitRef, '--depth=1']);\n await this.gitClient.checkout(['-b', reactNativeVersion, 'FETCH_HEAD']);\n } catch (ex) {\n throw new Error(\n `Failed to fetch '${gitRef}'. Does it exist? (${\n (ex as Error).message\n })`,\n );\n }\n\n await this.gitClient.checkout([reactNativeVersion, '--force']);\n }\n\n private static async defaultGitDirectory(): Promise<string> {\n return path.join(os.tmpdir(), (await getNpmPackage()).name, 'git');\n }\n\n private async ensureFile(filename: string): Promise<void> {\n const stat = await this.fileRepo.stat(filename);\n if (stat === 'none') {\n throw new Error(\n `Cannot find file \"${filename}\" in react-native@${this.checkedOutVersion}`,\n );\n } else if (stat === 'directory') {\n throw new Error(`\"${filename}\" refers to a directory`);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"GitReactFileRepository.js","sourceRoot":"","sources":["../src/GitReactFileRepository.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * @format\n */\n\nimport fs from 'node:fs/promises';\nimport os from 'os';\nimport path from 'path';\nimport {simpleGit as simplegit, SimpleGit, ResetMode} from 'simple-git';\n\nimport BatchingQueue from './BatchingQueue';\nimport FileSystemRepository from './FileSystemRepository';\nimport {VersionedReactFileRepository} from './FileRepository';\nimport {getNpmPackage} from './PackageUtils';\nimport {fetchFullRef} from './refFromVersion';\n\nconst RN_GITHUB_URL = 'https://github.com/facebook/react-native.git';\n\n/**\n * Retrieves React Native files using the React Native Github repo. Switching\n * between getting file contents of different versions may be slow.\n */\nexport default class GitReactFileRepository\n implements VersionedReactFileRepository\n{\n private readonly fileRepo: FileSystemRepository;\n private readonly gitClient: SimpleGit;\n private checkedOutVersion?: string;\n private static githubToken?: string;\n\n // We need to ensure it is impossible to check out a new React Native\n // version while an operation hasn't yet finished. We queue each operation to\n // ensure they are performed atomically.\n private readonly batchingQueue: BatchingQueue<string>;\n\n private constructor(gitDirectory: string, gitClient: SimpleGit) {\n this.batchingQueue = new BatchingQueue();\n this.fileRepo = new FileSystemRepository(gitDirectory);\n this.gitClient = gitClient;\n }\n\n /**\n * Asynchronously initialize the scratch repository, creating a new Git repo is needed\n * @param gitDirectory optional repo directory\n */\n static async createAndInit(\n gitDirectory?: string,\n ): Promise<GitReactFileRepository> {\n const dir = gitDirectory || (await this.defaultGitDirectory());\n await fs.mkdir(dir, {recursive: true});\n\n const gitClient = simplegit(dir);\n\n if (!(await gitClient.checkIsRepo())) {\n await gitClient.init();\n await gitClient.addConfig('core.autocrlf', 'input');\n await gitClient.addConfig('core.filemode', 'false');\n await gitClient.addConfig('core.ignorecase', 'true');\n }\n\n return new GitReactFileRepository(dir, gitClient);\n }\n\n /**\n * Set a GitHub API token for all instances of GitReactFileRepository to use\n * when making requests.\n * @param token a GitHub PAT\n */\n static setGithubToken(token: string) {\n GitReactFileRepository.githubToken = token;\n }\n\n async listFiles(\n globs: string[] | undefined,\n reactNativeVersion: string,\n ): Promise<string[]> {\n return this.usingVersion(reactNativeVersion, () =>\n this.fileRepo.listFiles(globs),\n );\n }\n\n async readFile(\n filename: string,\n reactNativeVersion: string,\n ): Promise<Buffer | null> {\n return this.usingVersion(reactNativeVersion, () =>\n this.fileRepo.readFile(filename),\n );\n }\n\n async stat(\n filename: string,\n reactNativeVersion: string,\n ): Promise<'file' | 'directory' | 'none'> {\n return this.usingVersion(reactNativeVersion, () =>\n this.fileRepo.stat(filename),\n );\n }\n\n /**\n * Generate a Git-style patch to transform the given file into the given\n * content.\n */\n async generatePatch(\n filename: string,\n reactNativeVersion: string,\n newContent: Buffer,\n ): Promise<string> {\n return this.usingVersion(reactNativeVersion, async () => {\n await this.ensureFile(filename);\n\n try {\n await this.fileRepo.writeFile(filename, newContent);\n const patch = await this.gitClient.diff([\n '--patch',\n '--ignore-space-at-eol',\n '--binary',\n '--',\n filename,\n ]);\n\n return patch;\n } finally {\n await this.gitClient.reset(ResetMode.HARD);\n }\n });\n }\n\n /**\n * Apply a patch to the given file, returning the merged result, which may\n * include conflict markers. The underlying file is not mutated.\n *\n * Git is unable to generate a representation with conflict markers in the\n * event of binary merge conflicts. In this case a null Buffer is returned.\n */\n async getPatchedFile(\n filename: string,\n reactNativeVersion: string,\n patchContent: string,\n ): Promise<{patchedFile: Buffer | null; hasConflicts: boolean}> {\n return this.usingVersion(reactNativeVersion, async () => {\n await this.ensureFile(filename);\n\n try {\n await this.fileRepo.writeFile('rnwgit.patch', patchContent);\n\n let hasConflicts = false;\n let binaryConflicts = false;\n\n try {\n await this.gitClient.raw([\n 'apply',\n '--3way',\n '--whitespace=nowarn',\n 'rnwgit.patch',\n ]);\n } catch (ex) {\n // Hack alert: simple-git doesn't populate exception information from\n // conflicts when we're using raw commands (which we need to since it\n // doesn't support apply). Try to detect if Git gave us a bad exit code\n // because of merge conflicts, which we explicitly want to allow.\n if (!(ex as Error).message.includes('with conflicts')) {\n throw ex;\n }\n\n hasConflicts = true;\n binaryConflicts = (ex as Error).message.includes(\n 'Cannot merge binary files',\n );\n }\n\n const patchedFile = binaryConflicts\n ? null\n : await this.fileRepo.readFile(filename);\n\n return {patchedFile, hasConflicts};\n } finally {\n await this.gitClient.reset(ResetMode.HARD);\n }\n });\n }\n\n private async usingVersion<T>(\n reactNativeVersion: string,\n fn: () => Promise<T>,\n ): Promise<T> {\n return await this.batchingQueue.enqueue(reactNativeVersion, async () => {\n await this.checkoutVersion(reactNativeVersion);\n return await fn();\n });\n }\n\n private async checkoutVersion(reactNativeVersion: string) {\n if (reactNativeVersion !== this.checkedOutVersion) {\n if (!(await this.tryCheckoutLocal(reactNativeVersion))) {\n await this.fetchAndCheckout(reactNativeVersion);\n }\n\n this.checkedOutVersion = reactNativeVersion;\n }\n }\n\n private async tryCheckoutLocal(reactNativeVersion: string): Promise<boolean> {\n try {\n await this.gitClient.checkout([reactNativeVersion, '--force']);\n return true;\n } catch {\n return false;\n }\n }\n\n private async fetchAndCheckout(reactNativeVersion: string) {\n const githubToken =\n GitReactFileRepository.githubToken ||\n process.env.PLATFORM_OVERRIDE_GITHUB_TOKEN;\n const gitRef = await fetchFullRef(reactNativeVersion, {githubToken});\n\n try {\n await this.gitClient.fetch([RN_GITHUB_URL, gitRef, '--depth=1']);\n await this.gitClient.checkout(['-b', reactNativeVersion, 'FETCH_HEAD']);\n } catch (ex) {\n throw new Error(\n `Failed to fetch '${gitRef}'. Does it exist? (${\n (ex as Error).message\n })`,\n );\n }\n\n await this.gitClient.checkout([reactNativeVersion, '--force']);\n }\n\n private static async defaultGitDirectory(): Promise<string> {\n return path.join(os.tmpdir(), (await getNpmPackage()).name, 'git');\n }\n\n private async ensureFile(filename: string): Promise<void> {\n const stat = await this.fileRepo.stat(filename);\n if (stat === 'none') {\n throw new Error(\n `Cannot find file \"${filename}\" in react-native@${this.checkedOutVersion}`,\n );\n } else if (stat === 'directory') {\n throw new Error(`\"${filename}\" refers to a directory`);\n }\n }\n}\n"]}
|
|
@@ -10,7 +10,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.getNpmPackage = exports.getInstalledRNVersion = void 0;
|
|
13
|
-
const
|
|
13
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
14
14
|
const FileSearch_1 = require("./FileSearch");
|
|
15
15
|
let npmPackage = null;
|
|
16
16
|
/**
|
|
@@ -34,7 +34,7 @@ async function getNpmPackage() {
|
|
|
34
34
|
return npmPackage;
|
|
35
35
|
}
|
|
36
36
|
const npmPackagePath = await (0, FileSearch_1.findThisPackage)();
|
|
37
|
-
npmPackage = await
|
|
37
|
+
npmPackage = JSON.parse(await promises_1.default.readFile(npmPackagePath, 'utf8'));
|
|
38
38
|
return npmPackage;
|
|
39
39
|
}
|
|
40
40
|
exports.getNpmPackage = getNpmPackage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PackageUtils.js","sourceRoot":"","sources":["../src/PackageUtils.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"PackageUtils.js","sourceRoot":"","sources":["../src/PackageUtils.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,gEAAkC;AAClC,6CAA6C;AAE7C,IAAI,UAAU,GAAQ,IAAI,CAAC;AAE3B;;;GAGG;AACI,KAAK,UAAU,qBAAqB;IACzC,MAAM,SAAS,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IAElC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;KACnE;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AATD,sDASC;AAED;;GAEG;AACI,KAAK,UAAU,aAAa;IACjC,IAAI,UAAU,KAAK,IAAI,EAAE;QACvB,OAAO,UAAU,CAAC;KACnB;IAED,MAAM,cAAc,GAAG,MAAM,IAAA,4BAAe,GAAE,CAAC;IAC/C,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;IAEnE,OAAO,UAAU,CAAC;AACpB,CAAC;AATD,sCASC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * @format\n */\n\nimport fs from 'node:fs/promises';\nimport {findThisPackage} from './FileSearch';\n\nlet npmPackage: any = null;\n\n/**\n * Try to find the currently installed React Native version by searching for and\n * reading it's package.json.\n */\nexport async function getInstalledRNVersion(): Promise<string> {\n const rnPackage = require('react-native/package.json');\n const version = rnPackage.version;\n\n if (typeof version !== 'string') {\n throw new Error('Unexpected format of React Native package.json');\n }\n\n return version;\n}\n\n/**\n * Return an object representing the package.json of our current package\n */\nexport async function getNpmPackage(): Promise<any> {\n if (npmPackage !== null) {\n return npmPackage;\n }\n\n const npmPackagePath = await findThisPackage();\n npmPackage = JSON.parse(await fs.readFile(npmPackagePath, 'utf8'));\n\n return npmPackage;\n}\n"]}
|
|
@@ -33,7 +33,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
33
33
|
};
|
|
34
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
35
|
exports.writeManifestToFile = exports.parseManifest = exports.readManifestFromFile = void 0;
|
|
36
|
-
const
|
|
36
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
37
37
|
const path_1 = __importDefault(require("path"));
|
|
38
38
|
const t = __importStar(require("io-ts"));
|
|
39
39
|
const ThrowReporter_1 = require("io-ts/lib/ThrowReporter");
|
|
@@ -113,7 +113,7 @@ const ManifestType = t.type({
|
|
|
113
113
|
* @throws if the file is invalid or cannot be found
|
|
114
114
|
*/
|
|
115
115
|
async function readManifestFromFile(filePath) {
|
|
116
|
-
const json = (await
|
|
116
|
+
const json = (await promises_1.default.readFile(filePath)).toString();
|
|
117
117
|
return parseManifest(json);
|
|
118
118
|
}
|
|
119
119
|
exports.readManifestFromFile = readManifestFromFile;
|
|
@@ -139,8 +139,8 @@ exports.parseManifest = parseManifest;
|
|
|
139
139
|
*/
|
|
140
140
|
async function writeManifestToFile(manifest, filePath) {
|
|
141
141
|
const json = JSON.stringify(manifest, null /*replacer*/, 2 /*space*/);
|
|
142
|
-
await
|
|
143
|
-
await
|
|
142
|
+
await promises_1.default.mkdir(path_1.default.dirname(filePath), { recursive: true });
|
|
143
|
+
await promises_1.default.writeFile(filePath, json);
|
|
144
144
|
}
|
|
145
145
|
exports.writeManifestToFile = writeManifestToFile;
|
|
146
146
|
//# sourceMappingURL=Serialized.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Serialized.js","sourceRoot":"","sources":["../src/Serialized.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"Serialized.js","sourceRoot":"","sources":["../src/Serialized.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * @format\n */\n\nimport fs from 'node:fs/promises';\nimport path from 'path';\nimport * as t from 'io-ts';\n\nimport {ThrowReporter} from 'io-ts/lib/ThrowReporter';\n\n/**\n * Serialized form of {@see PlatformOverride}\n */\nconst PlatformOverrideType = t.type({\n type: t.literal('platform'),\n file: t.string,\n});\n\n/**\n * Serialized form of {@see PatchOverride}\n */\nconst PatchOverrideType = t.type({\n type: t.literal('patch'),\n file: t.string,\n baseFile: t.string,\n baseVersion: t.union([t.undefined, t.string]),\n baseHash: t.string,\n issue: t.union([t.undefined, t.number]),\n});\n\n/**\n * Serialized form of {@see DerivedOverride}\n */\nconst DerivedOverrideType = t.type({\n type: t.literal('derived'),\n file: t.string,\n baseFile: t.string,\n baseVersion: t.union([t.undefined, t.string]),\n baseHash: t.string,\n issue: t.union([t.undefined, t.number]),\n});\n\n/**\n * Serialized form of {@see CopyOverride}\n */\nconst CopyOverrideType = t.type({\n type: t.literal('copy'),\n file: t.string,\n baseFile: t.string,\n baseVersion: t.union([t.undefined, t.string]),\n baseHash: t.string,\n issue: t.union([t.undefined, t.number]),\n});\n\n/**\n * Serialized form of {@see DirectoryCopyOverride}\n */\nconst DirectoryCopyOverrideType = t.type({\n type: t.literal('copy'),\n directory: t.string,\n baseDirectory: t.string,\n baseVersion: t.union([t.undefined, t.string]),\n baseHash: t.string,\n issue: t.union([t.undefined, t.number]),\n});\n\n/**\n * Union of all serialized override types\n */\nconst OverrideType = t.union([\n PlatformOverrideType,\n PatchOverrideType,\n DerivedOverrideType,\n CopyOverrideType,\n DirectoryCopyOverrideType,\n]);\n\n/**\n * Schema for the \"overrides.json\" manifest\n */\nconst ManifestType = t.type({\n includePatterns: t.union([t.undefined, t.array(t.string)]),\n excludePatterns: t.union([t.undefined, t.array(t.string)]),\n baseVersion: t.union([t.undefined, t.string]),\n overrides: t.array(OverrideType),\n});\n\nexport type PlatformOverride = t.TypeOf<typeof PlatformOverrideType>;\nexport type PatchOverride = t.TypeOf<typeof PatchOverrideType>;\nexport type DerivedOverride = t.TypeOf<typeof DerivedOverrideType>;\nexport type CopyOverride = t.TypeOf<typeof CopyOverrideType>;\nexport type DirectoryCopyOverride = t.TypeOf<typeof DirectoryCopyOverrideType>;\nexport type Override = t.TypeOf<typeof OverrideType>;\nexport type Manifest = t.TypeOf<typeof ManifestType>;\n\n/**\n * Read an override manifest from a file.\n *\n * @throws if the file is invalid or cannot be found\n */\nexport async function readManifestFromFile(\n filePath: string,\n): Promise<Manifest> {\n const json = (await fs.readFile(filePath)).toString();\n return parseManifest(json);\n}\n\n/**\n * Parse a string with JSON for the override manifest into one.\n *\n * @throws if the JSON doesn't describe a valid manifest\n */\nexport function parseManifest(json: string): Manifest {\n const parsed = JSON.parse(json);\n\n try {\n ThrowReporter.report(ManifestType.decode(parsed));\n } catch (ex) {\n throw new Error('Could not parse manifest. Is it valid?');\n }\n\n return parsed;\n}\n\n/**\n * Writes the manifest to a JSON file. Does not validate correctness of the\n * manifest.\n */\nexport async function writeManifestToFile(\n manifest: Manifest,\n filePath: string,\n) {\n const json = JSON.stringify(manifest, null /*replacer*/, 2 /*space*/);\n await fs.mkdir(path.dirname(filePath), {recursive: true});\n await fs.writeFile(filePath, json);\n}\n"]}
|
|
@@ -9,10 +9,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
9
9
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const
|
|
12
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
13
13
|
const Hash_1 = require("../Hash");
|
|
14
14
|
(async function () {
|
|
15
|
-
const content = await
|
|
15
|
+
const content = await promises_1.default.readFile(process.argv[2]);
|
|
16
16
|
console.log((0, Hash_1.hashContent)(content));
|
|
17
17
|
})();
|
|
18
18
|
//# sourceMappingURL=hashFile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hashFile.js","sourceRoot":"","sources":["../../src/scripts/hashFile.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"hashFile.js","sourceRoot":"","sources":["../../src/scripts/hashFile.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAEH,gEAAkC;AAClC,kCAAoC;AAEpC,CAAC,KAAK;IACJ,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,IAAA,kBAAW,EAAC,OAAO,CAAC,CAAC,CAAC;AACpC,CAAC,CAAC,EAAE,CAAC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * @format\n */\n\nimport fs from 'node:fs/promises';\nimport {hashContent} from '../Hash';\n\n(async function () {\n const content = await fs.readFile(process.argv[2]);\n console.log(hashContent(content));\n})();\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-platform-override",
|
|
3
|
-
"version": "0.81.
|
|
3
|
+
"version": "0.81.4",
|
|
4
4
|
"description": "react-native-platform-override offers CLI tools to manage Javascript overrides in out-of-tree React Native platforms",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "./lib-commonjs/Api.js",
|
|
@@ -18,14 +18,11 @@
|
|
|
18
18
|
"test": "rnw-scripts test",
|
|
19
19
|
"watch": "rnw-scripts watch"
|
|
20
20
|
},
|
|
21
|
-
"bin":
|
|
22
|
-
"react-native-platform-override": "./bin.js"
|
|
23
|
-
},
|
|
21
|
+
"bin": "./bin.js",
|
|
24
22
|
"dependencies": {
|
|
25
|
-
"@react-native-windows/
|
|
26
|
-
"@
|
|
27
|
-
"@typescript-eslint/
|
|
28
|
-
"@typescript-eslint/parser": "^7.1.1",
|
|
23
|
+
"@react-native-windows/package-utils": "0.81.3",
|
|
24
|
+
"@typescript-eslint/eslint-plugin": "^8.36.0",
|
|
25
|
+
"@typescript-eslint/parser": "^8.36.0",
|
|
29
26
|
"async": "^3.2.3",
|
|
30
27
|
"chalk": "^4.1.0",
|
|
31
28
|
"fp-ts": "^2.5.0",
|
|
@@ -37,7 +34,7 @@
|
|
|
37
34
|
"node-fetch": "^2.6.7",
|
|
38
35
|
"ora": "^3.4.0",
|
|
39
36
|
"semver": "^7.3.2",
|
|
40
|
-
"simple-git": "^
|
|
37
|
+
"simple-git": "^4.0.2",
|
|
41
38
|
"source-map-support": "^0.5.19",
|
|
42
39
|
"upath": "^1.2.0",
|
|
43
40
|
"yargs": "^16.2.0"
|
|
@@ -46,7 +43,7 @@
|
|
|
46
43
|
"@babel/core": "^7.25.2",
|
|
47
44
|
"@babel/preset-env": "^7.25.3",
|
|
48
45
|
"@babel/preset-typescript": "^7.8.3",
|
|
49
|
-
"@rnw-scripts/eslint-config": "1.2.
|
|
46
|
+
"@rnw-scripts/eslint-config": "1.2.38",
|
|
50
47
|
"@rnw-scripts/jest-unittest-config": "1.5.12",
|
|
51
48
|
"@rnw-scripts/just-task": "2.3.56",
|
|
52
49
|
"@rnw-scripts/ts-config": "2.0.6",
|