react-native-platform-override 1.5.0 → 1.6.2

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 (46) hide show
  1. package/bin.js +0 -0
  2. package/lib-commonjs/Api.d.ts +1 -0
  3. package/lib-commonjs/Api.js +14 -13
  4. package/lib-commonjs/Api.js.map +1 -1
  5. package/lib-commonjs/BatchingQueue.js.map +1 -1
  6. package/lib-commonjs/Cli.js +30 -30
  7. package/lib-commonjs/Cli.js.map +1 -1
  8. package/lib-commonjs/CrossProcessLock.js +5 -5
  9. package/lib-commonjs/CrossProcessLock.js.map +1 -1
  10. package/lib-commonjs/FileRepository.js +3 -3
  11. package/lib-commonjs/FileRepository.js.map +1 -1
  12. package/lib-commonjs/FileSearch.js +6 -23
  13. package/lib-commonjs/FileSearch.js.map +1 -1
  14. package/lib-commonjs/FileSystemRepository.js +7 -7
  15. package/lib-commonjs/FileSystemRepository.js.map +1 -1
  16. package/lib-commonjs/GitReactFileRepository.d.ts +0 -2
  17. package/lib-commonjs/GitReactFileRepository.js +8 -42
  18. package/lib-commonjs/GitReactFileRepository.js.map +1 -1
  19. package/lib-commonjs/Hash.js +4 -7
  20. package/lib-commonjs/Hash.js.map +1 -1
  21. package/lib-commonjs/Manifest.js +10 -10
  22. package/lib-commonjs/Manifest.js.map +1 -1
  23. package/lib-commonjs/Override.js +13 -13
  24. package/lib-commonjs/Override.js.map +1 -1
  25. package/lib-commonjs/OverrideFactory.js +1 -1
  26. package/lib-commonjs/OverrideFactory.js.map +1 -1
  27. package/lib-commonjs/OverridePrompt.js +6 -6
  28. package/lib-commonjs/OverridePrompt.js.map +1 -1
  29. package/lib-commonjs/PackageUtils.js +3 -4
  30. package/lib-commonjs/PackageUtils.js.map +1 -1
  31. package/lib-commonjs/Serialized.js +5 -5
  32. package/lib-commonjs/Serialized.js.map +1 -1
  33. package/lib-commonjs/UpgradeStrategy.js +7 -7
  34. package/lib-commonjs/UpgradeStrategy.js.map +1 -1
  35. package/lib-commonjs/ValidationStrategy.js +5 -5
  36. package/lib-commonjs/ValidationStrategy.js.map +1 -1
  37. package/lib-commonjs/refFromVersion.d.ts +10 -0
  38. package/lib-commonjs/refFromVersion.js +92 -0
  39. package/lib-commonjs/refFromVersion.js.map +1 -0
  40. package/lib-commonjs/scripts/generateManifest.js +9 -9
  41. package/lib-commonjs/scripts/generateManifest.js.map +1 -1
  42. package/lib-commonjs/scripts/hashFile.js +3 -3
  43. package/lib-commonjs/scripts/hashFile.js.map +1 -1
  44. package/package.json +10 -9
  45. package/CHANGELOG.json +0 -895
  46. package/CHANGELOG.md +0 -371
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refFromVersion.js","sourceRoot":"","sources":["../src/refFromVersion.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 fetch from 'node-fetch';\nimport semver from 'semver';\n\nexport function getAbbreviatedRef(reactNativeVersion: string): string {\n if (!semver.valid(reactNativeVersion)) {\n throw new Error(`${reactNativeVersion} is not a valid semver version`);\n }\n\n if (semver.lt(reactNativeVersion, '0.0.0', {includePrerelease: true})) {\n return extractHashFromNightlyVersion(reactNativeVersion);\n } else {\n return `v${reactNativeVersion}`;\n }\n}\n\nexport async function fetchFullRef(\n reactNativeVersion: string,\n opts?: {githubToken?: string},\n): Promise<string> {\n if (!semver.valid(reactNativeVersion)) {\n throw new Error(`${reactNativeVersion} is not a valid semver version`);\n }\n\n if (semver.lt(reactNativeVersion, '0.0.0', {includePrerelease: true})) {\n const abbrevHash = extractHashFromNightlyVersion(reactNativeVersion);\n return fetchFullCommitHash(abbrevHash, opts);\n } else {\n return `refs/tags/v${reactNativeVersion}`;\n }\n}\n\n// Nightly build have progressed from\n// 1. 0.0.0-<commitHash>\n// 2. 0.0.0-<commitHash>-<date>-<time> (transitional)\n// 3. 0.0.0-<date>-<time>-<commitHash>\nfunction extractHashFromNightlyVersion(reactNativeVersion: string): string {\n // Several versions do not fall into the normal rule for positioning. Special\n // case them.\n const transitionalVersions = [\n '0.0.0-2d2de744b-20210929-2246',\n '0.0.0-1ee16fc2f-20210930-2008',\n '0.0.0-34b7d22f3-20211001-2008',\n '0.0.0-36f3bf2f5-20211002-2010',\n '0.0.0-36f3bf2f5-20211003-2009',\n '0.0.0-36f3bf2f5-20211004-2008',\n '0.0.0-046b02628-20211005-2008',\n '0.0.0-22801870f-20211006-2008',\n '0.0.0-e612d3a11-20211007-2009',\n '0.0.0-c901c43d1-20211008-2008',\n '0.0.0-232d02c5f-20211009-2008',\n '0.0.0-232d02c5f-20211009-2008',\n '0.0.0-232d02c5f-20211009-2008',\n '0.0.0-232d02c5f-20211009-2008',\n '0.0.0-91adb761c-20211013-2010',\n ];\n\n const preSegment = semver.prerelease(reactNativeVersion)![0];\n const splitPre = preSegment.split('-');\n\n // Handle #1\n if (splitPre.length === 1) {\n return splitPre[0];\n }\n\n // Handle #2\n if (transitionalVersions.includes(reactNativeVersion)) {\n return splitPre[0];\n }\n\n // Handle #3\n return splitPre[2];\n}\n\nasync function fetchFullCommitHash(\n abbrevHash: string,\n opts?: {githubToken?: string},\n): Promise<string> {\n // We cannot get abbreviated hash directly from a remote, so query Github's\n // API for it.\n const commitInfo = await fetch(\n `https://api.github.com/repos/facebook/react-native/commits/${abbrevHash}`,\n {\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': 'react-native-platform-override',\n ...(opts?.githubToken && {Authorization: `Token ${opts.githubToken}`}),\n },\n },\n );\n if (!commitInfo.ok) {\n throw new Error(\n `Unable to query Github for commit '${abbrevHash}' Status: '${commitInfo.statusText}'`,\n );\n }\n\n return (await commitInfo.json()).sha;\n}\n"]}
@@ -20,7 +20,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
20
20
  var __importStar = (this && this.__importStar) || function (mod) {
21
21
  if (mod && mod.__esModule) return mod;
22
22
  var result = {};
23
- if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
24
24
  __setModuleDefault(result, mod);
25
25
  return result;
26
26
  };
@@ -53,11 +53,11 @@ const { extensions, directory } = yargs_1.default
53
53
  },
54
54
  })
55
55
  .version(false).argv;
56
- const extensionsRegex = new RegExp(extensions.map(e => `\\.${e}`).join('|'));
56
+ const extensionsRegex = new RegExp(extensions.map((e) => `\\.${e}`).join('|'));
57
57
  (async () => {
58
- const spinner = ora_1.default();
58
+ const spinner = (0, ora_1.default)();
59
59
  spinner.start('Creating manifest');
60
- const version = await PackageUtils_1.getInstalledRNVersion();
60
+ const version = await (0, PackageUtils_1.getInstalledRNVersion)();
61
61
  const [overrides, reactSources] = await getFileRepos(directory, version);
62
62
  const manifest = {
63
63
  includePatterns: undefined,
@@ -84,7 +84,7 @@ async function tryAddCopy(filename, overrideContent, reactSources, manifest) {
84
84
  if (!baseContent) {
85
85
  return false;
86
86
  }
87
- if (Hash_1.hashContent(baseContent) !== Hash_1.hashContent(overrideContent)) {
87
+ if ((0, Hash_1.hashContent)(baseContent) !== (0, Hash_1.hashContent)(overrideContent)) {
88
88
  return false;
89
89
  }
90
90
  manifest.overrides.push({
@@ -92,7 +92,7 @@ async function tryAddCopy(filename, overrideContent, reactSources, manifest) {
92
92
  file: filename,
93
93
  baseFile: filename,
94
94
  baseVersion: undefined,
95
- baseHash: Hash_1.hashContent(baseContent),
95
+ baseHash: (0, Hash_1.hashContent)(baseContent),
96
96
  issue: undefined,
97
97
  });
98
98
  return true;
@@ -110,7 +110,7 @@ async function tryAddPatch(filename, overrideContent, reactSources, manifest) {
110
110
  file: filename,
111
111
  baseFile: baseFile,
112
112
  baseVersion: undefined,
113
- baseHash: Hash_1.hashContent(baseContent),
113
+ baseHash: (0, Hash_1.hashContent)(baseContent),
114
114
  issue: undefined,
115
115
  });
116
116
  }
@@ -150,7 +150,7 @@ async function tryAddDerived(filename, overrideContent, reactSources, manifest)
150
150
  file: filename,
151
151
  baseFile: bestMatch.file,
152
152
  baseVersion: undefined,
153
- baseHash: Hash_1.hashContent(bestMatch.contents),
153
+ baseHash: (0, Hash_1.hashContent)(bestMatch.contents),
154
154
  issue: undefined,
155
155
  });
156
156
  return true;
@@ -170,7 +170,7 @@ async function getFileRepos(overrideovrPath, rnVersion) {
170
170
  return [overrides, reactSources];
171
171
  }
172
172
  function computeSimilarity(override, source) {
173
- if (!isutf8_1.default(override) || !isutf8_1.default(source)) {
173
+ if (!(0, isutf8_1.default)(override) || !(0, isutf8_1.default)(source)) {
174
174
  return { similar: false, editDistance: NaN };
175
175
  }
176
176
  let overrideStr = override.toString();
@@ -1 +1 @@
1
- {"version":3,"file":"generateManifest.js","sourceRoot":"","sources":["../../src/scripts/generateManifest.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 * as FileRepository from '../FileRepository';\nimport * as Serialized from '../Serialized';\n\nimport ora from 'ora';\nimport path from 'path';\nimport yargs from 'yargs';\n\nimport FileSystemRepository from '../FileSystemRepository';\nimport GitReactFileRepository from '../GitReactFileRepository';\n\nimport {diff_match_patch} from 'diff-match-patch';\nimport {getInstalledRNVersion} from '../PackageUtils';\nimport {hashContent} from '../Hash';\n\nimport isUtf8 from 'isutf8';\n\nconst {extensions, directory} = yargs\n .options({\n directory: {\n description:\n 'The directory containing files that should be in the manifest',\n type: 'string',\n demandOption: true,\n },\n extensions: {\n description: 'A list of platform specific JS extensions to include',\n type: 'array',\n demandOption: true,\n },\n })\n .version(false).argv;\n\nconst extensionsRegex = new RegExp(extensions.map(e => `\\\\.${e}`).join('|'));\n\n(async () => {\n const spinner = ora();\n spinner.start('Creating manifest');\n\n const version = await getInstalledRNVersion();\n const [overrides, reactSources] = await getFileRepos(directory, version);\n const manifest: Serialized.Manifest = {\n includePatterns: undefined,\n excludePatterns: undefined,\n baseVersion: version,\n overrides: [],\n };\n const overrideFiles = await overrides.listFiles();\n\n let i = 0;\n for (const file of overrideFiles) {\n spinner.text = `Creating manifest (${++i}/${overrideFiles.length})`;\n\n const contents = (await overrides.readFile(file))!;\n (await tryAddCopy(file, contents, reactSources, manifest)) ||\n (await tryAddPatch(file, contents, reactSources, manifest)) ||\n (await tryAddDerived(file, contents, reactSources, manifest)) ||\n addUnknown(file, manifest);\n }\n\n const ovrFile = path.join(directory, 'overrides.json');\n await Serialized.writeManifestToFile(manifest, ovrFile);\n\n spinner.succeed();\n})();\n\nasync function tryAddCopy(\n filename: string,\n overrideContent: Buffer,\n reactSources: FileRepository.ReactFileRepository,\n manifest: Serialized.Manifest,\n): Promise<boolean> {\n const baseContent = await reactSources.readFile(filename);\n if (!baseContent) {\n return false;\n }\n\n if (hashContent(baseContent) !== hashContent(overrideContent)) {\n return false;\n }\n\n manifest.overrides.push({\n type: 'copy',\n file: filename,\n baseFile: filename,\n baseVersion: undefined,\n baseHash: hashContent(baseContent),\n issue: undefined,\n });\n\n return true;\n}\n\nasync function tryAddPatch(\n filename: string,\n overrideContent: Buffer,\n reactSources: FileRepository.ReactFileRepository,\n manifest: Serialized.Manifest,\n): Promise<boolean> {\n const baseFile = filename.replace(extensionsRegex, '');\n const baseContent = await reactSources.readFile(baseFile);\n\n if (!baseContent) {\n return false;\n }\n\n const {similar} = computeSimilarity(overrideContent, baseContent);\n if (similar) {\n manifest.overrides.push({\n type: 'patch',\n file: filename,\n baseFile: baseFile,\n baseVersion: undefined,\n baseHash: hashContent(baseContent),\n issue: undefined,\n });\n } else {\n addUnknown(filename, manifest);\n }\n\n return true;\n}\n\nasync function tryAddDerived(\n filename: string,\n overrideContent: Buffer,\n reactSources: FileRepository.ReactFileRepository,\n manifest: Serialized.Manifest,\n): Promise<boolean> {\n const matches: Array<{file: string; contents: Buffer; dist: number}> = [];\n\n const droidFile = filename.replace(extensionsRegex, '.android');\n const droidContents = await reactSources.readFile(droidFile);\n const droidSim =\n droidContents && computeSimilarity(overrideContent, droidContents);\n if (droidSim && droidSim.similar) {\n matches.push({\n file: droidFile,\n contents: droidContents!,\n dist: droidSim.editDistance,\n });\n }\n\n const iosFile = filename.replace(extensionsRegex, '.ios');\n const iosContents = await reactSources.readFile(iosFile);\n const iosSim = iosContents && computeSimilarity(overrideContent, iosContents);\n if (iosSim && iosSim.similar) {\n matches.push({\n file: iosFile,\n contents: iosContents!,\n dist: iosSim.editDistance,\n });\n }\n\n if (matches.length === 0) {\n return false;\n }\n\n const bestMatch = matches.reduce((a, b) => (a.dist < b.dist ? a : b));\n manifest.overrides.push({\n type: 'derived',\n file: filename,\n baseFile: bestMatch.file,\n baseVersion: undefined,\n baseHash: hashContent(bestMatch.contents),\n issue: undefined,\n });\n\n return true;\n}\n\nfunction addUnknown(filename: string, manifest: Serialized.Manifest) {\n (manifest.overrides as Array<any>).push({\n type: '???',\n file: filename,\n baseFile: '???',\n baseHash: '???',\n });\n}\n\nasync function getFileRepos(\n overrideovrPath: string,\n rnVersion: string,\n): Promise<\n [FileRepository.WritableFileRepository, FileRepository.ReactFileRepository]\n> {\n const overrides = new FileSystemRepository(overrideovrPath);\n\n const versionedReactSources = await GitReactFileRepository.createAndInit();\n const reactSources = FileRepository.bindVersion(\n versionedReactSources,\n rnVersion,\n );\n\n return [overrides, reactSources];\n}\n\nfunction computeSimilarity(\n override: Buffer,\n source: Buffer,\n): {similar: boolean; editDistance: number} {\n if (!isUtf8(override) || !isUtf8(source)) {\n return {similar: false, editDistance: NaN};\n }\n\n let overrideStr = override.toString();\n let sourceStr = source.toString();\n\n overrideStr = stripCopyrightHeaders(overrideStr);\n sourceStr = stripCopyrightHeaders(sourceStr);\n\n const differ = new diff_match_patch();\n const diffs = differ.diff_main(sourceStr, overrideStr);\n\n const editDistance = differ.diff_levenshtein(diffs);\n const similar =\n editDistance / Math.max(overrideStr.length, sourceStr.length) < 0.8;\n return {similar, editDistance};\n}\n\nfunction stripCopyrightHeaders(str: string): string {\n if (!str.startsWith('/*')) {\n return str;\n }\n\n const headerEnd = str.indexOf('*/') + 1;\n return str.slice(headerEnd);\n}\n"]}
1
+ {"version":3,"file":"generateManifest.js","sourceRoot":"","sources":["../../src/scripts/generateManifest.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 * as FileRepository from '../FileRepository';\nimport * as Serialized from '../Serialized';\n\nimport ora from 'ora';\nimport path from 'path';\nimport yargs from 'yargs';\n\nimport FileSystemRepository from '../FileSystemRepository';\nimport GitReactFileRepository from '../GitReactFileRepository';\n\nimport {diff_match_patch} from 'diff-match-patch';\nimport {getInstalledRNVersion} from '../PackageUtils';\nimport {hashContent} from '../Hash';\n\nimport isUtf8 from 'isutf8';\n\nconst {extensions, directory} = yargs\n .options({\n directory: {\n description:\n 'The directory containing files that should be in the manifest',\n type: 'string',\n demandOption: true,\n },\n extensions: {\n description: 'A list of platform specific JS extensions to include',\n type: 'array',\n demandOption: true,\n },\n })\n .version(false).argv;\n\nconst extensionsRegex = new RegExp(extensions.map((e) => `\\\\.${e}`).join('|'));\n\n(async () => {\n const spinner = ora();\n spinner.start('Creating manifest');\n\n const version = await getInstalledRNVersion();\n const [overrides, reactSources] = await getFileRepos(directory, version);\n const manifest: Serialized.Manifest = {\n includePatterns: undefined,\n excludePatterns: undefined,\n baseVersion: version,\n overrides: [],\n };\n const overrideFiles = await overrides.listFiles();\n\n let i = 0;\n for (const file of overrideFiles) {\n spinner.text = `Creating manifest (${++i}/${overrideFiles.length})`;\n\n const contents = (await overrides.readFile(file))!;\n (await tryAddCopy(file, contents, reactSources, manifest)) ||\n (await tryAddPatch(file, contents, reactSources, manifest)) ||\n (await tryAddDerived(file, contents, reactSources, manifest)) ||\n addUnknown(file, manifest);\n }\n\n const ovrFile = path.join(directory, 'overrides.json');\n await Serialized.writeManifestToFile(manifest, ovrFile);\n\n spinner.succeed();\n})();\n\nasync function tryAddCopy(\n filename: string,\n overrideContent: Buffer,\n reactSources: FileRepository.ReactFileRepository,\n manifest: Serialized.Manifest,\n): Promise<boolean> {\n const baseContent = await reactSources.readFile(filename);\n if (!baseContent) {\n return false;\n }\n\n if (hashContent(baseContent) !== hashContent(overrideContent)) {\n return false;\n }\n\n manifest.overrides.push({\n type: 'copy',\n file: filename,\n baseFile: filename,\n baseVersion: undefined,\n baseHash: hashContent(baseContent),\n issue: undefined,\n });\n\n return true;\n}\n\nasync function tryAddPatch(\n filename: string,\n overrideContent: Buffer,\n reactSources: FileRepository.ReactFileRepository,\n manifest: Serialized.Manifest,\n): Promise<boolean> {\n const baseFile = filename.replace(extensionsRegex, '');\n const baseContent = await reactSources.readFile(baseFile);\n\n if (!baseContent) {\n return false;\n }\n\n const {similar} = computeSimilarity(overrideContent, baseContent);\n if (similar) {\n manifest.overrides.push({\n type: 'patch',\n file: filename,\n baseFile: baseFile,\n baseVersion: undefined,\n baseHash: hashContent(baseContent),\n issue: undefined,\n });\n } else {\n addUnknown(filename, manifest);\n }\n\n return true;\n}\n\nasync function tryAddDerived(\n filename: string,\n overrideContent: Buffer,\n reactSources: FileRepository.ReactFileRepository,\n manifest: Serialized.Manifest,\n): Promise<boolean> {\n const matches: Array<{file: string; contents: Buffer; dist: number}> = [];\n\n const droidFile = filename.replace(extensionsRegex, '.android');\n const droidContents = await reactSources.readFile(droidFile);\n const droidSim =\n droidContents && computeSimilarity(overrideContent, droidContents);\n if (droidSim && droidSim.similar) {\n matches.push({\n file: droidFile,\n contents: droidContents!,\n dist: droidSim.editDistance,\n });\n }\n\n const iosFile = filename.replace(extensionsRegex, '.ios');\n const iosContents = await reactSources.readFile(iosFile);\n const iosSim = iosContents && computeSimilarity(overrideContent, iosContents);\n if (iosSim && iosSim.similar) {\n matches.push({\n file: iosFile,\n contents: iosContents!,\n dist: iosSim.editDistance,\n });\n }\n\n if (matches.length === 0) {\n return false;\n }\n\n const bestMatch = matches.reduce((a, b) => (a.dist < b.dist ? a : b));\n manifest.overrides.push({\n type: 'derived',\n file: filename,\n baseFile: bestMatch.file,\n baseVersion: undefined,\n baseHash: hashContent(bestMatch.contents),\n issue: undefined,\n });\n\n return true;\n}\n\nfunction addUnknown(filename: string, manifest: Serialized.Manifest) {\n (manifest.overrides as Array<any>).push({\n type: '???',\n file: filename,\n baseFile: '???',\n baseHash: '???',\n });\n}\n\nasync function getFileRepos(\n overrideovrPath: string,\n rnVersion: string,\n): Promise<\n [FileRepository.WritableFileRepository, FileRepository.ReactFileRepository]\n> {\n const overrides = new FileSystemRepository(overrideovrPath);\n\n const versionedReactSources = await GitReactFileRepository.createAndInit();\n const reactSources = FileRepository.bindVersion(\n versionedReactSources,\n rnVersion,\n );\n\n return [overrides, reactSources];\n}\n\nfunction computeSimilarity(\n override: Buffer,\n source: Buffer,\n): {similar: boolean; editDistance: number} {\n if (!isUtf8(override) || !isUtf8(source)) {\n return {similar: false, editDistance: NaN};\n }\n\n let overrideStr = override.toString();\n let sourceStr = source.toString();\n\n overrideStr = stripCopyrightHeaders(overrideStr);\n sourceStr = stripCopyrightHeaders(sourceStr);\n\n const differ = new diff_match_patch();\n const diffs = differ.diff_main(sourceStr, overrideStr);\n\n const editDistance = differ.diff_levenshtein(diffs);\n const similar =\n editDistance / Math.max(overrideStr.length, sourceStr.length) < 0.8;\n return {similar, editDistance};\n}\n\nfunction stripCopyrightHeaders(str: string): string {\n if (!str.startsWith('/*')) {\n return str;\n }\n\n const headerEnd = str.indexOf('*/') + 1;\n return str.slice(headerEnd);\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 fs_1 = __importDefault(require("fs"));
12
+ const fs_1 = __importDefault(require("@react-native-windows/fs"));
13
13
  const Hash_1 = require("../Hash");
14
14
  (async function () {
15
- const content = await fs_1.default.promises.readFile(process.argv[2]);
16
- console.log(Hash_1.hashContent(content));
15
+ const content = await fs_1.default.readFile(process.argv[2]);
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,4CAAoB;AACpB,kCAAoC;AAEpC,CAAC,KAAK;IACJ,MAAM,OAAO,GAAG,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,kBAAW,CAAC,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 'fs';\nimport {hashContent} from '../Hash';\n\n(async function() {\n const content = await fs.promises.readFile(process.argv[2]);\n console.log(hashContent(content));\n})();\n"]}
1
+ {"version":3,"file":"hashFile.js","sourceRoot":"","sources":["../../src/scripts/hashFile.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAEH,kEAA0C;AAC1C,kCAAoC;AAEpC,CAAC,KAAK;IACJ,MAAM,OAAO,GAAG,MAAM,YAAE,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 '@react-native-windows/fs';\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": "1.5.0",
3
+ "version": "1.6.2",
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",
@@ -22,7 +22,8 @@
22
22
  "react-native-platform-override": "./bin.js"
23
23
  },
24
24
  "dependencies": {
25
- "@react-native-windows/package-utils": "^0.0.0-canary.21",
25
+ "@react-native-windows/fs": "^1.0.1",
26
+ "@react-native-windows/package-utils": "^0.0.0-canary.24",
26
27
  "async": "^3.2.0",
27
28
  "chalk": "^4.1.0",
28
29
  "fp-ts": "^2.5.0",
@@ -43,10 +44,10 @@
43
44
  "@babel/core": "^7.14.0",
44
45
  "@babel/preset-env": "^7.8.4",
45
46
  "@babel/preset-typescript": "^7.8.3",
46
- "@react-native-windows/package-utils": "0.0.0-canary.21",
47
- "@rnw-scripts/eslint-config": "1.1.8",
48
- "@rnw-scripts/jest-unittest-config": "1.2.4",
49
- "@rnw-scripts/just-task": "2.2.1",
47
+ "@react-native-windows/package-utils": "0.0.0-canary.24",
48
+ "@rnw-scripts/eslint-config": "1.1.10",
49
+ "@rnw-scripts/jest-unittest-config": "1.2.5",
50
+ "@rnw-scripts/just-task": "2.2.2",
50
51
  "@rnw-scripts/ts-config": "2.0.1",
51
52
  "@types/async": "^3.2.5",
52
53
  "@types/chalk": "^2.2.0",
@@ -63,12 +64,12 @@
63
64
  "@types/yargs": "^16.0.0",
64
65
  "babel-jest": "^26.3.0",
65
66
  "diff-match-patch": "^1.0.4",
66
- "eslint": "7.12.0",
67
+ "eslint": "^7.32.0",
67
68
  "jest": "^26.6.3",
68
69
  "just-scripts": "^1.3.3",
69
70
  "minimatch": "^3.0.4",
70
- "prettier": "1.19.1",
71
- "typescript": "^3.8.3"
71
+ "prettier": "^2.4.1",
72
+ "typescript": "^4.4.4"
72
73
  },
73
74
  "peerDependencies": {
74
75
  "react-native": "*"