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.
- package/bin.js +0 -0
- package/lib-commonjs/Api.d.ts +1 -0
- package/lib-commonjs/Api.js +14 -13
- package/lib-commonjs/Api.js.map +1 -1
- package/lib-commonjs/BatchingQueue.js.map +1 -1
- package/lib-commonjs/Cli.js +30 -30
- package/lib-commonjs/Cli.js.map +1 -1
- package/lib-commonjs/CrossProcessLock.js +5 -5
- package/lib-commonjs/CrossProcessLock.js.map +1 -1
- package/lib-commonjs/FileRepository.js +3 -3
- package/lib-commonjs/FileRepository.js.map +1 -1
- package/lib-commonjs/FileSearch.js +6 -23
- package/lib-commonjs/FileSearch.js.map +1 -1
- package/lib-commonjs/FileSystemRepository.js +7 -7
- package/lib-commonjs/FileSystemRepository.js.map +1 -1
- package/lib-commonjs/GitReactFileRepository.d.ts +0 -2
- package/lib-commonjs/GitReactFileRepository.js +8 -42
- package/lib-commonjs/GitReactFileRepository.js.map +1 -1
- package/lib-commonjs/Hash.js +4 -7
- package/lib-commonjs/Hash.js.map +1 -1
- package/lib-commonjs/Manifest.js +10 -10
- package/lib-commonjs/Manifest.js.map +1 -1
- package/lib-commonjs/Override.js +13 -13
- package/lib-commonjs/Override.js.map +1 -1
- package/lib-commonjs/OverrideFactory.js +1 -1
- package/lib-commonjs/OverrideFactory.js.map +1 -1
- package/lib-commonjs/OverridePrompt.js +6 -6
- package/lib-commonjs/OverridePrompt.js.map +1 -1
- package/lib-commonjs/PackageUtils.js +3 -4
- package/lib-commonjs/PackageUtils.js.map +1 -1
- package/lib-commonjs/Serialized.js +5 -5
- package/lib-commonjs/Serialized.js.map +1 -1
- package/lib-commonjs/UpgradeStrategy.js +7 -7
- package/lib-commonjs/UpgradeStrategy.js.map +1 -1
- package/lib-commonjs/ValidationStrategy.js +5 -5
- package/lib-commonjs/ValidationStrategy.js.map +1 -1
- package/lib-commonjs/refFromVersion.d.ts +10 -0
- package/lib-commonjs/refFromVersion.js +92 -0
- package/lib-commonjs/refFromVersion.js.map +1 -0
- package/lib-commonjs/scripts/generateManifest.js +9 -9
- package/lib-commonjs/scripts/generateManifest.js.map +1 -1
- package/lib-commonjs/scripts/hashFile.js +3 -3
- package/lib-commonjs/scripts/hashFile.js.map +1 -1
- package/package.json +10 -9
- package/CHANGELOG.json +0 -895
- package/CHANGELOG.md +0 -371
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Override.js","sourceRoot":"","sources":["../src/Override.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 Serialized from './Serialized';\nimport path from 'path';\n\nimport DiffStrategy, {DiffStrategies} from './DiffStrategy';\nimport UpgradeStrategy, {UpgradeStrategies} from './UpgradeStrategy';\nimport ValidationStrategy, {ValidationStrategies} from './ValidationStrategy';\nimport {normalizePath, unixPath} from './PathUtils';\nimport OverrideFactory from './OverrideFactory';\n\nexport type SerializeOpts = {defaultBaseVersion?: string};\nexport type FromSerializedOpts = {defaultBaseVersion?: string};\n\n/**\n * Immutable programmatic representation of an override. This should remain\n * generic to files vs directories, different representations, different\n * validation rules, etc.\n */\nexport default interface Override {\n /**\n * Case sensitive identifer of the override (e.g. filename or directory name)\n */\n name(): string;\n\n /**\n * Does the override include the given file?\n */\n includesFile(filename: string): boolean;\n\n /**\n * Convert to a serialized representation\n */\n serialize(opts?: SerializeOpts): Serialized.Override;\n\n /**\n * Create a copy of the override which is considered \"up to date\" in regards\n * to the current React source tree. This does not change underlying content.\n */\n createUpdated(factory: OverrideFactory): Promise<Override>;\n\n /**\n * Specifies how the override should be modified to integrate new changes.\n */\n upgradeStrategy(): UpgradeStrategy;\n\n /**\n * Specifies how to check if the override contents are valid and up to date.\n */\n validationStrategies(): ValidationStrategy[];\n\n /**\n * Specifies how to diff an override against its base version\n */\n diffStrategy(): DiffStrategy;\n}\n\n/**\n * Platform overrides represent logic not derived from upstream sources.\n */\nexport class PlatformOverride implements Override {\n private readonly overrideFile: string;\n\n constructor(args: {file: string}) {\n this.overrideFile = normalizePath(args.file);\n }\n\n static fromSerialized(\n serialized: Serialized.PlatformOverride,\n _opts?: FromSerializedOpts,\n ): PlatformOverride {\n return new PlatformOverride(serialized);\n }\n\n serialize(): Serialized.PlatformOverride {\n return {type: 'platform', file: unixPath(this.overrideFile)};\n }\n\n name(): string {\n return this.overrideFile;\n }\n\n includesFile(filename: string): boolean {\n return normalizePath(filename) === this.overrideFile;\n }\n\n async createUpdated(factory: OverrideFactory): Promise<Override> {\n return factory.createPlatformOverride(this.overrideFile);\n }\n\n upgradeStrategy(): UpgradeStrategy {\n return UpgradeStrategies.assumeUpToDate(this.overrideFile);\n }\n\n validationStrategies(): ValidationStrategy[] {\n return [ValidationStrategies.overrideFileExists(this.overrideFile)];\n }\n\n diffStrategy(): DiffStrategy {\n return DiffStrategies.asssumeSame();\n }\n}\n\n/**\n * Base class for overrides which derive from an upstream file\n */\nabstract class BaseFileOverride implements Override {\n protected overrideFile: string;\n protected baseFile: string;\n protected baseVersion: string;\n protected baseHash: string;\n protected issueNumber?: number;\n\n constructor(args: {\n file: string;\n baseFile: string;\n baseVersion: string;\n baseHash: string;\n issue?: number;\n }) {\n this.overrideFile = normalizePath(args.file);\n this.baseFile = normalizePath(args.baseFile);\n this.baseVersion = args.baseVersion;\n this.baseHash = args.baseHash;\n this.issueNumber = args.issue;\n }\n\n name(): string {\n return this.overrideFile;\n }\n\n includesFile(filename: string): boolean {\n return normalizePath(filename) === this.overrideFile;\n }\n\n abstract serialize(): Serialized.Override;\n abstract createUpdated(factory: OverrideFactory): Promise<Override>;\n abstract upgradeStrategy(): UpgradeStrategy;\n\n validationStrategies(): ValidationStrategy[] {\n return [\n ValidationStrategies.baseFileExists(this.overrideFile, this.baseFile),\n ValidationStrategies.overrideFileExists(this.overrideFile),\n ValidationStrategies.baseUpToDate(\n this.overrideFile,\n this.baseFile,\n this.baseHash,\n ),\n ];\n }\n\n diffStrategy(): DiffStrategy {\n return DiffStrategies.compareBaseFile(\n this.overrideFile,\n this.baseFile,\n this.baseVersion,\n );\n }\n\n protected serializeBase<T>(type: T, opts?: SerializeOpts) {\n return {\n type,\n file: unixPath(this.overrideFile),\n baseFile: unixPath(this.baseFile),\n baseVersion:\n opts?.defaultBaseVersion === this.baseVersion\n ? undefined\n : this.baseVersion,\n baseHash: this.baseHash,\n issue: this.issueNumber,\n };\n }\n}\n\n/**\n * Copy overrides enforce that an override file is an exact copy of a base file\n */\nexport class CopyOverride extends BaseFileOverride {\n constructor(args: {\n file: string;\n baseFile: string;\n baseVersion: string;\n baseHash: string;\n issue?: number;\n }) {\n super(args);\n }\n\n static fromSerialized(\n serialized: Serialized.CopyOverride,\n opts?: FromSerializedOpts,\n ): CopyOverride {\n return new CopyOverride(mergeBaseVersion(serialized, opts));\n }\n\n serialize(opts?: SerializeOpts): Serialized.CopyOverride {\n return this.serializeBase('copy', opts);\n }\n\n async createUpdated(factory: OverrideFactory): Promise<Override> {\n return factory.createCopyOverride(\n this.overrideFile,\n this.baseFile,\n this.issueNumber as number,\n );\n }\n\n upgradeStrategy(): UpgradeStrategy {\n return UpgradeStrategies.copyFile(this.overrideFile, this.baseFile);\n }\n\n validationStrategies(): ValidationStrategy[] {\n return [\n ...super.validationStrategies(),\n ValidationStrategies.overrideCopyOfBase(this.overrideFile, this.baseFile),\n ];\n }\n}\n\n/**\n * Derived overrides represent files which are based off of an existing file in\n * the React Native source tree.\n */\nexport class DerivedOverride extends BaseFileOverride {\n constructor(args: {\n file: string;\n baseFile: string;\n baseVersion: string;\n baseHash: string;\n issue?: number;\n }) {\n super(args);\n }\n\n static fromSerialized(\n serialized: Serialized.DerivedOverride,\n opts?: FromSerializedOpts,\n ): DerivedOverride {\n return new DerivedOverride(mergeBaseVersion(serialized, opts));\n }\n\n serialize(opts?: SerializeOpts): Serialized.DerivedOverride {\n return this.serializeBase('derived', opts);\n }\n\n async createUpdated(factory: OverrideFactory): Promise<Override> {\n return factory.createDerivedOverride(\n this.overrideFile,\n this.baseFile,\n this.issueNumber || undefined,\n );\n }\n\n upgradeStrategy(): UpgradeStrategy {\n return UpgradeStrategies.threeWayMerge(\n this.overrideFile,\n this.baseFile,\n this.baseVersion,\n );\n }\n\n validationStrategies(): ValidationStrategy[] {\n return [\n ...super.validationStrategies(),\n ValidationStrategies.overrideDifferentFromBase(\n this.overrideFile,\n this.baseFile,\n ),\n ];\n }\n}\n\n/**\n * Patch overrides represent files which make minor modifications to existing\n * upstream sources.\n */\nexport class PatchOverride extends BaseFileOverride {\n constructor(args: {\n file: string;\n baseFile: string;\n baseVersion: string;\n baseHash: string;\n issue?: number;\n }) {\n super(args);\n }\n\n static fromSerialized(\n serialized: Serialized.PatchOverride,\n opts?: FromSerializedOpts,\n ): PatchOverride {\n return new PatchOverride(mergeBaseVersion(serialized, opts));\n }\n\n serialize(opts?: SerializeOpts): Serialized.PatchOverride {\n return this.serializeBase('patch', opts);\n }\n\n async createUpdated(factory: OverrideFactory): Promise<Override> {\n return factory.createPatchOverride(\n this.overrideFile,\n this.baseFile,\n this.issueNumber!,\n );\n }\n\n upgradeStrategy(): UpgradeStrategy {\n return UpgradeStrategies.threeWayMerge(\n this.overrideFile,\n this.baseFile,\n this.baseVersion,\n );\n }\n\n validationStrategies(): ValidationStrategy[] {\n return [\n ...super.validationStrategies(),\n ValidationStrategies.overrideDifferentFromBase(\n this.overrideFile,\n this.baseFile,\n ),\n ];\n }\n}\n\n/**\n * DirectoryCopy overrides copy files from an upstream directory\n */\nexport class DirectoryCopyOverride implements Override {\n private readonly directory: string;\n private readonly baseDirectory: string;\n private readonly baseVersion: string;\n private readonly baseHash: string;\n private readonly issue?: number;\n\n constructor(args: {\n directory: string;\n baseDirectory: string;\n baseVersion: string;\n baseHash: string;\n issue?: number;\n }) {\n this.directory = normalizePath(args.directory);\n this.baseDirectory = normalizePath(args.baseDirectory);\n this.baseVersion = args.baseVersion;\n this.baseHash = args.baseHash;\n this.issue = args.issue;\n }\n\n static fromSerialized(\n serialized: Serialized.DirectoryCopyOverride,\n opts?: FromSerializedOpts,\n ): DirectoryCopyOverride {\n return new DirectoryCopyOverride(mergeBaseVersion(serialized, opts));\n }\n\n serialize(opts?: SerializeOpts): Serialized.DirectoryCopyOverride {\n return {\n type: 'copy',\n directory: unixPath(this.directory),\n baseDirectory: unixPath(this.baseDirectory),\n baseVersion:\n opts?.defaultBaseVersion === this.baseVersion\n ? undefined\n : this.baseVersion,\n baseHash: this.baseHash,\n issue: this.issue,\n };\n }\n\n name(): string {\n return this.directory;\n }\n\n includesFile(filename: string): boolean {\n const relativeToDir = path.relative(\n this.directory,\n normalizePath(filename),\n );\n\n return relativeToDir.split(path.sep)[0] !== '..';\n }\n\n async createUpdated(factory: OverrideFactory): Promise<Override> {\n return factory.createDirectoryCopyOverride(\n this.directory,\n this.baseDirectory,\n this.issue,\n );\n }\n\n upgradeStrategy(): UpgradeStrategy {\n return UpgradeStrategies.copyDirectory(this.directory, this.baseDirectory);\n }\n\n validationStrategies(): ValidationStrategy[] {\n return [\n ValidationStrategies.overrideDirectoryExists(this.directory),\n ValidationStrategies.baseDirectoryExists(\n this.directory,\n this.baseDirectory,\n ),\n ValidationStrategies.baseUpToDate(\n this.directory,\n this.baseDirectory,\n this.baseHash,\n ),\n ValidationStrategies.overrideCopyOfBase(\n this.directory,\n this.baseDirectory,\n ),\n ];\n }\n\n diffStrategy(): DiffStrategy {\n return DiffStrategies.asssumeSame();\n }\n}\n\nexport function deserializeOverride(\n ovr: Serialized.Override,\n opts?: FromSerializedOpts,\n): Override {\n switch (ovr.type) {\n case 'platform':\n return PlatformOverride.fromSerialized(ovr, opts);\n case 'copy':\n return 'directory' in ovr\n ? DirectoryCopyOverride.fromSerialized(ovr, opts)\n : CopyOverride.fromSerialized(ovr, opts);\n case 'derived':\n return DerivedOverride.fromSerialized(ovr, opts);\n case 'patch':\n return PatchOverride.fromSerialized(ovr, opts);\n }\n}\n\nfunction mergeBaseVersion<T extends {baseVersion?: string}>(\n ovr: T,\n opts?: FromSerializedOpts,\n): T & {baseVersion: string} {\n if (!ovr.baseVersion && !opts?.defaultBaseVersion) {\n throw new Error(\n `The following override should declare a baseVersion if the manifest does not provide a default: ${JSON.stringify(\n ovr,\n null,\n 2,\n )}`,\n );\n }\n\n return Object.assign({}, ovr, {\n baseVersion: ovr.baseVersion || opts?.defaultBaseVersion!,\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Override.js","sourceRoot":"","sources":["../src/Override.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 Serialized from './Serialized';\nimport path from 'path';\n\nimport DiffStrategy, {DiffStrategies} from './DiffStrategy';\nimport UpgradeStrategy, {UpgradeStrategies} from './UpgradeStrategy';\nimport ValidationStrategy, {ValidationStrategies} from './ValidationStrategy';\nimport {normalizePath, unixPath} from './PathUtils';\nimport OverrideFactory from './OverrideFactory';\n\nexport type SerializeOpts = {defaultBaseVersion?: string};\nexport type FromSerializedOpts = {defaultBaseVersion?: string};\n\n/**\n * Immutable programmatic representation of an override. This should remain\n * generic to files vs directories, different representations, different\n * validation rules, etc.\n */\nexport default interface Override {\n /**\n * Case sensitive identifer of the override (e.g. filename or directory name)\n */\n name(): string;\n\n /**\n * Does the override include the given file?\n */\n includesFile(filename: string): boolean;\n\n /**\n * Convert to a serialized representation\n */\n serialize(opts?: SerializeOpts): Serialized.Override;\n\n /**\n * Create a copy of the override which is considered \"up to date\" in regards\n * to the current React source tree. This does not change underlying content.\n */\n createUpdated(factory: OverrideFactory): Promise<Override>;\n\n /**\n * Specifies how the override should be modified to integrate new changes.\n */\n upgradeStrategy(): UpgradeStrategy;\n\n /**\n * Specifies how to check if the override contents are valid and up to date.\n */\n validationStrategies(): ValidationStrategy[];\n\n /**\n * Specifies how to diff an override against its base version\n */\n diffStrategy(): DiffStrategy;\n}\n\n/**\n * Platform overrides represent logic not derived from upstream sources.\n */\nexport class PlatformOverride implements Override {\n private readonly overrideFile: string;\n\n constructor(args: {file: string}) {\n this.overrideFile = normalizePath(args.file);\n }\n\n static fromSerialized(\n serialized: Serialized.PlatformOverride,\n _opts?: FromSerializedOpts,\n ): PlatformOverride {\n return new PlatformOverride(serialized);\n }\n\n serialize(): Serialized.PlatformOverride {\n return {type: 'platform', file: unixPath(this.overrideFile)};\n }\n\n name(): string {\n return this.overrideFile;\n }\n\n includesFile(filename: string): boolean {\n return normalizePath(filename) === this.overrideFile;\n }\n\n async createUpdated(factory: OverrideFactory): Promise<Override> {\n return factory.createPlatformOverride(this.overrideFile);\n }\n\n upgradeStrategy(): UpgradeStrategy {\n return UpgradeStrategies.assumeUpToDate(this.overrideFile);\n }\n\n validationStrategies(): ValidationStrategy[] {\n return [ValidationStrategies.overrideFileExists(this.overrideFile)];\n }\n\n diffStrategy(): DiffStrategy {\n return DiffStrategies.asssumeSame();\n }\n}\n\n/**\n * Base class for overrides which derive from an upstream file\n */\nabstract class BaseFileOverride implements Override {\n protected overrideFile: string;\n protected baseFile: string;\n protected baseVersion: string;\n protected baseHash: string;\n protected issueNumber?: number;\n\n constructor(args: {\n file: string;\n baseFile: string;\n baseVersion: string;\n baseHash: string;\n issue?: number;\n }) {\n this.overrideFile = normalizePath(args.file);\n this.baseFile = normalizePath(args.baseFile);\n this.baseVersion = args.baseVersion;\n this.baseHash = args.baseHash;\n this.issueNumber = args.issue;\n }\n\n name(): string {\n return this.overrideFile;\n }\n\n includesFile(filename: string): boolean {\n return normalizePath(filename) === this.overrideFile;\n }\n\n abstract serialize(): Serialized.Override;\n abstract createUpdated(factory: OverrideFactory): Promise<Override>;\n abstract upgradeStrategy(): UpgradeStrategy;\n\n validationStrategies(): ValidationStrategy[] {\n return [\n ValidationStrategies.baseFileExists(this.overrideFile, this.baseFile),\n ValidationStrategies.overrideFileExists(this.overrideFile),\n ValidationStrategies.baseUpToDate(\n this.overrideFile,\n this.baseFile,\n this.baseHash,\n ),\n ];\n }\n\n diffStrategy(): DiffStrategy {\n return DiffStrategies.compareBaseFile(\n this.overrideFile,\n this.baseFile,\n this.baseVersion,\n );\n }\n\n protected serializeBase<T>(type: T, opts?: SerializeOpts) {\n return {\n type,\n file: unixPath(this.overrideFile),\n baseFile: unixPath(this.baseFile),\n baseVersion:\n opts?.defaultBaseVersion === this.baseVersion\n ? undefined\n : this.baseVersion,\n baseHash: this.baseHash,\n issue: this.issueNumber,\n };\n }\n}\n\n/**\n * Copy overrides enforce that an override file is an exact copy of a base file\n */\nexport class CopyOverride extends BaseFileOverride {\n constructor(args: {\n file: string;\n baseFile: string;\n baseVersion: string;\n baseHash: string;\n issue?: number;\n }) {\n super(args);\n }\n\n static fromSerialized(\n serialized: Serialized.CopyOverride,\n opts?: FromSerializedOpts,\n ): CopyOverride {\n return new CopyOverride(mergeBaseVersion(serialized, opts));\n }\n\n serialize(opts?: SerializeOpts): Serialized.CopyOverride {\n return this.serializeBase('copy', opts);\n }\n\n async createUpdated(factory: OverrideFactory): Promise<Override> {\n return factory.createCopyOverride(\n this.overrideFile,\n this.baseFile,\n this.issueNumber as number,\n );\n }\n\n upgradeStrategy(): UpgradeStrategy {\n return UpgradeStrategies.copyFile(this.overrideFile, this.baseFile);\n }\n\n validationStrategies(): ValidationStrategy[] {\n return [\n ...super.validationStrategies(),\n ValidationStrategies.overrideCopyOfBase(this.overrideFile, this.baseFile),\n ];\n }\n}\n\n/**\n * Derived overrides represent files which are based off of an existing file in\n * the React Native source tree.\n */\nexport class DerivedOverride extends BaseFileOverride {\n constructor(args: {\n file: string;\n baseFile: string;\n baseVersion: string;\n baseHash: string;\n issue?: number;\n }) {\n super(args);\n }\n\n static fromSerialized(\n serialized: Serialized.DerivedOverride,\n opts?: FromSerializedOpts,\n ): DerivedOverride {\n return new DerivedOverride(mergeBaseVersion(serialized, opts));\n }\n\n serialize(opts?: SerializeOpts): Serialized.DerivedOverride {\n return this.serializeBase('derived', opts);\n }\n\n async createUpdated(factory: OverrideFactory): Promise<Override> {\n return factory.createDerivedOverride(\n this.overrideFile,\n this.baseFile,\n this.issueNumber || undefined,\n );\n }\n\n upgradeStrategy(): UpgradeStrategy {\n return UpgradeStrategies.threeWayMerge(\n this.overrideFile,\n this.baseFile,\n this.baseVersion,\n );\n }\n\n validationStrategies(): ValidationStrategy[] {\n return [\n ...super.validationStrategies(),\n ValidationStrategies.overrideDifferentFromBase(\n this.overrideFile,\n this.baseFile,\n ),\n ];\n }\n}\n\n/**\n * Patch overrides represent files which make minor modifications to existing\n * upstream sources.\n */\nexport class PatchOverride extends BaseFileOverride {\n constructor(args: {\n file: string;\n baseFile: string;\n baseVersion: string;\n baseHash: string;\n issue?: number;\n }) {\n super(args);\n }\n\n static fromSerialized(\n serialized: Serialized.PatchOverride,\n opts?: FromSerializedOpts,\n ): PatchOverride {\n return new PatchOverride(mergeBaseVersion(serialized, opts));\n }\n\n serialize(opts?: SerializeOpts): Serialized.PatchOverride {\n return this.serializeBase('patch', opts);\n }\n\n async createUpdated(factory: OverrideFactory): Promise<Override> {\n return factory.createPatchOverride(\n this.overrideFile,\n this.baseFile,\n this.issueNumber!,\n );\n }\n\n upgradeStrategy(): UpgradeStrategy {\n return UpgradeStrategies.threeWayMerge(\n this.overrideFile,\n this.baseFile,\n this.baseVersion,\n );\n }\n\n validationStrategies(): ValidationStrategy[] {\n return [\n ...super.validationStrategies(),\n ValidationStrategies.overrideDifferentFromBase(\n this.overrideFile,\n this.baseFile,\n ),\n ];\n }\n}\n\n/**\n * DirectoryCopy overrides copy files from an upstream directory\n */\nexport class DirectoryCopyOverride implements Override {\n private readonly directory: string;\n private readonly baseDirectory: string;\n private readonly baseVersion: string;\n private readonly baseHash: string;\n private readonly issue?: number;\n\n constructor(args: {\n directory: string;\n baseDirectory: string;\n baseVersion: string;\n baseHash: string;\n issue?: number;\n }) {\n this.directory = normalizePath(args.directory);\n this.baseDirectory = normalizePath(args.baseDirectory);\n this.baseVersion = args.baseVersion;\n this.baseHash = args.baseHash;\n this.issue = args.issue;\n }\n\n static fromSerialized(\n serialized: Serialized.DirectoryCopyOverride,\n opts?: FromSerializedOpts,\n ): DirectoryCopyOverride {\n return new DirectoryCopyOverride(mergeBaseVersion(serialized, opts));\n }\n\n serialize(opts?: SerializeOpts): Serialized.DirectoryCopyOverride {\n return {\n type: 'copy',\n directory: unixPath(this.directory),\n baseDirectory: unixPath(this.baseDirectory),\n baseVersion:\n opts?.defaultBaseVersion === this.baseVersion\n ? undefined\n : this.baseVersion,\n baseHash: this.baseHash,\n issue: this.issue,\n };\n }\n\n name(): string {\n return this.directory;\n }\n\n includesFile(filename: string): boolean {\n const relativeToDir = path.relative(\n this.directory,\n normalizePath(filename),\n );\n\n return relativeToDir.split(path.sep)[0] !== '..';\n }\n\n async createUpdated(factory: OverrideFactory): Promise<Override> {\n return factory.createDirectoryCopyOverride(\n this.directory,\n this.baseDirectory,\n this.issue,\n );\n }\n\n upgradeStrategy(): UpgradeStrategy {\n return UpgradeStrategies.copyDirectory(this.directory, this.baseDirectory);\n }\n\n validationStrategies(): ValidationStrategy[] {\n return [\n ValidationStrategies.overrideDirectoryExists(this.directory),\n ValidationStrategies.baseDirectoryExists(\n this.directory,\n this.baseDirectory,\n ),\n ValidationStrategies.baseUpToDate(\n this.directory,\n this.baseDirectory,\n this.baseHash,\n ),\n ValidationStrategies.overrideCopyOfBase(\n this.directory,\n this.baseDirectory,\n ),\n ];\n }\n\n diffStrategy(): DiffStrategy {\n return DiffStrategies.asssumeSame();\n }\n}\n\nexport function deserializeOverride(\n ovr: Serialized.Override,\n opts?: FromSerializedOpts,\n): Override {\n switch (ovr.type) {\n case 'platform':\n return PlatformOverride.fromSerialized(ovr, opts);\n case 'copy':\n return 'directory' in ovr\n ? DirectoryCopyOverride.fromSerialized(ovr, opts)\n : CopyOverride.fromSerialized(ovr, opts);\n case 'derived':\n return DerivedOverride.fromSerialized(ovr, opts);\n case 'patch':\n return PatchOverride.fromSerialized(ovr, opts);\n }\n}\n\nfunction mergeBaseVersion<T extends {baseVersion?: string}>(\n ovr: T,\n opts?: FromSerializedOpts,\n): T & {baseVersion: string} {\n if (!ovr.baseVersion && !opts?.defaultBaseVersion) {\n throw new Error(\n `The following override should declare a baseVersion if the manifest does not provide a default: ${JSON.stringify(\n ovr,\n null,\n 2,\n )}`,\n );\n }\n\n return Object.assign({}, ovr, {\n baseVersion: ovr.baseVersion || opts?.defaultBaseVersion!,\n });\n}\n"]}
|
|
@@ -78,7 +78,7 @@ class OverrideFactoryImpl {
|
|
|
78
78
|
throw new Error(`Could not find base file/directory '${basePath}'`);
|
|
79
79
|
}
|
|
80
80
|
const baseVersion = this.reactRepo.getVersion();
|
|
81
|
-
const baseHash = (await Hash_1.hashFileOrDirectory(basePath, this.reactRepo));
|
|
81
|
+
const baseHash = (await (0, Hash_1.hashFileOrDirectory)(basePath, this.reactRepo));
|
|
82
82
|
return { baseVersion, baseHash };
|
|
83
83
|
}
|
|
84
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverrideFactory.js","sourceRoot":"","sources":["../src/OverrideFactory.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"OverrideFactory.js","sourceRoot":"","sources":["../src/OverrideFactory.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,gDAAwB;AAExB,yCAMoB;AAEpB,iCAA2C;AAiC3C;;GAEG;AACH,MAAa,mBAAmB;IAI9B,YAAY,SAA8B,EAAE,YAA4B;QACtE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,IAAY;QACvC,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,IAAI,2BAAgB,CAAC,EAAC,IAAI,EAAC,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,IAAY,EACZ,QAAgB,EAChB,KAAc;QAEd,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,IAAI,uBAAY,CAAC;YACtB,IAAI;YACJ,QAAQ;YACR,KAAK;YACL,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,IAAY,EACZ,QAAgB,EAChB,KAAc;QAEd,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,IAAI,0BAAe,CAAC;YACzB,IAAI;YACJ,QAAQ;YACR,KAAK;YACL,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,IAAY,EACZ,QAAgB,EAChB,KAAc;QAEd,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,IAAI,wBAAa,CAAC;YACvB,IAAI;YACJ,QAAQ;YACR,KAAK;YACL,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,2BAA2B,CAC/B,SAAiB,EACjB,aAAqB,EACrB,KAAc;QAEd,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACvD,OAAO,IAAI,gCAAqB,CAAC;YAC/B,SAAS;YACT,aAAa;YACb,KAAK;YACL,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,YAAoB,EACpB,IAA0B;QAE1B,IAAI,cAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;YACjC,MAAM,IAAI,KAAK,CACb,oDAAoD,YAAY,GAAG,CACpE,CAAC;SACH;QAED,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE;YACzD,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,2BAA2B,YAAY,GAAG,CACjE,CAAC;SACH;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,QAAgB;QAEhB,IAAI,cAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC7B,MAAM,IAAI,KAAK,CACb,gDAAgD,QAAQ,GAAG,CAC5D,CAAC;SACH;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,QAAQ,KAAK,MAAM,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,uCAAuC,QAAQ,GAAG,CAAC,CAAC;SACrE;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAA,0BAAmB,EAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAE,CAAC;QAExE,OAAO,EAAC,WAAW,EAAE,QAAQ,EAAC,CAAC;IACjC,CAAC;CACF;AA1GD,kDA0GC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * @format\n */\n\nimport path from 'path';\n\nimport {\n CopyOverride,\n DerivedOverride,\n DirectoryCopyOverride,\n PatchOverride,\n PlatformOverride,\n} from './Override';\nimport FileRepository, {ReactFileRepository} from './FileRepository';\nimport {hashFileOrDirectory} from './Hash';\n\n/**\n * Allows creation of overrides, taking care of guts such as hashing, version checking, etc.\n */\nexport default interface OverrideFactory {\n createPlatformOverride(file: string): Promise<PlatformOverride>;\n\n createCopyOverride(\n file: string,\n baseFile: string,\n issue?: number,\n ): Promise<CopyOverride>;\n\n createDerivedOverride(\n file: string,\n baseFile: string,\n issue?: number,\n ): Promise<DerivedOverride>;\n\n createPatchOverride(\n file: string,\n baseFile: string,\n issue?: number,\n ): Promise<PatchOverride>;\n\n createDirectoryCopyOverride(\n directory: string,\n baseDirectory: string,\n issue?: number,\n ): Promise<DirectoryCopyOverride>;\n}\n\n/**\n * Conrete implementation of an OverrideFactory\n */\nexport class OverrideFactoryImpl implements OverrideFactory {\n private readonly reactRepo: ReactFileRepository;\n private readonly overrideRepo: FileRepository;\n\n constructor(reactRepo: ReactFileRepository, overrideRepo: FileRepository) {\n this.reactRepo = reactRepo;\n this.overrideRepo = overrideRepo;\n }\n\n async createPlatformOverride(file: string): Promise<PlatformOverride> {\n await this.checkOverrideExists(file, 'file');\n return new PlatformOverride({file});\n }\n\n async createCopyOverride(\n file: string,\n baseFile: string,\n issue?: number,\n ): Promise<CopyOverride> {\n await this.checkOverrideExists(file, 'file');\n return new CopyOverride({\n file,\n baseFile,\n issue,\n ...(await this.getBaseInfo(baseFile)),\n });\n }\n\n async createDerivedOverride(\n file: string,\n baseFile: string,\n issue?: number,\n ): Promise<DerivedOverride> {\n await this.checkOverrideExists(file, 'file');\n return new DerivedOverride({\n file,\n baseFile,\n issue,\n ...(await this.getBaseInfo(baseFile)),\n });\n }\n\n async createPatchOverride(\n file: string,\n baseFile: string,\n issue?: number,\n ): Promise<PatchOverride> {\n await this.checkOverrideExists(file, 'file');\n return new PatchOverride({\n file,\n baseFile,\n issue,\n ...(await this.getBaseInfo(baseFile)),\n });\n }\n\n async createDirectoryCopyOverride(\n directory: string,\n baseDirectory: string,\n issue?: number,\n ): Promise<DirectoryCopyOverride> {\n await this.checkOverrideExists(directory, 'directory');\n return new DirectoryCopyOverride({\n directory,\n baseDirectory,\n issue,\n ...(await this.getBaseInfo(baseDirectory)),\n });\n }\n\n private async checkOverrideExists(\n overridePath: string,\n type: 'file' | 'directory',\n ) {\n if (path.isAbsolute(overridePath)) {\n throw new Error(\n `Expected override path to be repo relative. Got '${overridePath}'`,\n );\n }\n\n if ((await this.overrideRepo.stat(overridePath)) !== type) {\n throw new Error(\n `Could not find ${type} at repo relative path '${overridePath}'`,\n );\n }\n }\n\n private async getBaseInfo(\n basePath: string,\n ): Promise<{baseVersion: string; baseHash: string}> {\n if (path.isAbsolute(basePath)) {\n throw new Error(\n `Expected base path to be repo relative. Got '${basePath}'`,\n );\n }\n\n const baseType = await this.reactRepo.stat(basePath);\n if (baseType === 'none') {\n throw new Error(`Could not find base file/directory '${basePath}'`);\n }\n\n const baseVersion = this.reactRepo.getVersion();\n const baseHash = (await hashFileOrDirectory(basePath, this.reactRepo))!;\n\n return {baseVersion, baseHash};\n }\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
|
};
|
|
@@ -36,7 +36,7 @@ const PathUtils_1 = require("./PathUtils");
|
|
|
36
36
|
async function overrideFromDetails(overridePath, answers, factory) {
|
|
37
37
|
const manifestPath = await FileSearch.findManifest(overridePath);
|
|
38
38
|
const manifestDir = path_1.default.dirname(manifestPath);
|
|
39
|
-
const overrideName = PathUtils_1.normalizePath(path_1.default.relative(manifestDir, overridePath));
|
|
39
|
+
const overrideName = (0, PathUtils_1.normalizePath)(path_1.default.relative(manifestDir, overridePath));
|
|
40
40
|
switch (answers.type) {
|
|
41
41
|
case 'derived':
|
|
42
42
|
return factory.createDerivedOverride(overrideName, answers.baseFile, answers.issue);
|
|
@@ -86,14 +86,14 @@ async function promptForOverrideDetails() {
|
|
|
86
86
|
],
|
|
87
87
|
},
|
|
88
88
|
{
|
|
89
|
-
when: res => res.type === 'derived',
|
|
89
|
+
when: (res) => res.type === 'derived',
|
|
90
90
|
type: 'confirm',
|
|
91
91
|
name: 'codeCopied',
|
|
92
92
|
default: true,
|
|
93
93
|
message: 'Does the derived file copy code from upstream?',
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
|
-
when: res => (res.type === 'derived' && res.codeCopied) ||
|
|
96
|
+
when: (res) => (res.type === 'derived' && res.codeCopied) ||
|
|
97
97
|
['copy', 'directoryCopy', 'patch'].includes(res.type),
|
|
98
98
|
type: 'input',
|
|
99
99
|
validate: validateIssueNumber,
|
|
@@ -103,13 +103,13 @@ async function promptForOverrideDetails() {
|
|
|
103
103
|
message: 'Issue number tracking removal:',
|
|
104
104
|
},
|
|
105
105
|
{
|
|
106
|
-
when: res => ['copy', 'patch', 'derived'].includes(res.type),
|
|
106
|
+
when: (res) => ['copy', 'patch', 'derived'].includes(res.type),
|
|
107
107
|
type: 'input',
|
|
108
108
|
name: 'baseFile',
|
|
109
109
|
message: 'What file is this override based off of?',
|
|
110
110
|
},
|
|
111
111
|
{
|
|
112
|
-
when: res => res.type === 'directoryCopy',
|
|
112
|
+
when: (res) => res.type === 'directoryCopy',
|
|
113
113
|
type: 'input',
|
|
114
114
|
name: 'baseDirectory',
|
|
115
115
|
message: 'What directory are you copying from?',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverridePrompt.js","sourceRoot":"","sources":["../src/OverridePrompt.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,yDAA2C;AAC3C,wDAAgC;AAChC,gDAAwB;AAIxB,2CAA0C;AASnC,KAAK,UAAU,mBAAmB,CACvC,YAAoB,EACpB,OAA8B,EAC9B,OAAwB;IAExB,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,cAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,yBAAa,
|
|
1
|
+
{"version":3,"file":"OverridePrompt.js","sourceRoot":"","sources":["../src/OverridePrompt.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 FileSearch from './FileSearch';\nimport inquirer from 'inquirer';\nimport path from 'path';\n\nimport Override from './Override';\nimport OverrideFactory from './OverrideFactory';\nimport {normalizePath} from './PathUtils';\n\nexport type OverridePromptAnswers =\n | {type: 'derived'; baseFile: string; codeCopied: boolean; issue?: number}\n | {type: 'patch'; baseFile: string; issue: number}\n | {type: 'platform'}\n | {type: 'copy'; baseFile: string; issue: number}\n | {type: 'directoryCopy'; baseDirectory: string; issue: number};\n\nexport async function overrideFromDetails(\n overridePath: string,\n answers: OverridePromptAnswers,\n factory: OverrideFactory,\n): Promise<Override> {\n const manifestPath = await FileSearch.findManifest(overridePath);\n const manifestDir = path.dirname(manifestPath);\n const overrideName = normalizePath(path.relative(manifestDir, overridePath));\n\n switch (answers.type) {\n case 'derived':\n return factory.createDerivedOverride(\n overrideName,\n answers.baseFile,\n answers.issue,\n );\n case 'patch':\n return factory.createPatchOverride(\n overrideName,\n answers.baseFile,\n answers.issue,\n );\n case 'platform':\n return factory.createPlatformOverride(overridePath);\n case 'copy':\n return factory.createCopyOverride(\n overrideName,\n answers.baseFile,\n answers.issue,\n );\n case 'directoryCopy':\n return factory.createDirectoryCopyOverride(\n overrideName,\n answers.baseDirectory,\n answers.issue,\n );\n }\n}\n\nexport async function promptForOverrideDetails(): Promise<OverridePromptAnswers> {\n return inquirer.prompt([\n {\n type: 'list',\n name: 'type',\n message: 'Override type:',\n choices: [\n {\n name: 'Derived from upstream (E.g. a Windows implementation of an existing component)',\n value: 'derived',\n short: 'Derived',\n },\n {\n name: 'Patches to upstream (E.g. commenting out code)',\n value: 'patch',\n short: 'Patch',\n },\n {\n name: 'Independent platform logic (E.g. Windows-specific modules)',\n value: 'platform',\n short: 'Platform',\n },\n {\n name: 'Copy of an upstream file',\n value: 'copy',\n short: 'Copy',\n },\n {\n name: 'Copy of an upstream directory',\n value: 'directoryCopy',\n short: 'Directory Copy',\n },\n ],\n },\n {\n when: (res) => res.type === 'derived',\n type: 'confirm',\n name: 'codeCopied',\n default: true,\n message: 'Does the derived file copy code from upstream?',\n },\n {\n when: (res) =>\n (res.type === 'derived' && res.codeCopied) ||\n ['copy', 'directoryCopy', 'patch'].includes(res.type),\n type: 'input',\n validate: validateIssueNumber,\n filter: filterIssueNumber,\n askAnswered: true,\n name: 'issue',\n message: 'Issue number tracking removal:',\n },\n {\n when: (res) => ['copy', 'patch', 'derived'].includes(res.type),\n type: 'input',\n name: 'baseFile',\n message: 'What file is this override based off of?',\n },\n {\n when: (res) => res.type === 'directoryCopy',\n type: 'input',\n name: 'baseDirectory',\n message: 'What directory are you copying from?',\n },\n ]);\n}\n\nfunction filterIssueNumber(answer: string): number | string {\n const parsedInt = Number.parseInt(answer, 10);\n return Number.isInteger(parsedInt) ? parsedInt : '';\n}\n\nfunction validateIssueNumber(answer: string): boolean | string {\n return (\n Number.isInteger(Number.parseInt(answer, 10)) || 'Issue must be a number'\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 fs_1 = __importDefault(require("fs"));
|
|
13
|
+
const fs_1 = __importDefault(require("@react-native-windows/fs"));
|
|
14
14
|
const FileSearch_1 = require("./FileSearch");
|
|
15
15
|
let npmPackage = null;
|
|
16
16
|
/**
|
|
@@ -33,9 +33,8 @@ async function getNpmPackage() {
|
|
|
33
33
|
if (npmPackage !== null) {
|
|
34
34
|
return npmPackage;
|
|
35
35
|
}
|
|
36
|
-
const npmPackagePath = await FileSearch_1.findThisPackage();
|
|
37
|
-
|
|
38
|
-
npmPackage = JSON.parse(npmPackageContent.toString());
|
|
36
|
+
const npmPackagePath = await (0, FileSearch_1.findThisPackage)();
|
|
37
|
+
npmPackage = await fs_1.default.readJsonFile(npmPackagePath);
|
|
39
38
|
return npmPackage;
|
|
40
39
|
}
|
|
41
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,kEAA0C;AAC1C,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,+CAA+C,CAAC,CAAC;KAClE;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,MAAM,YAAE,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAEnD,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 '@react-native-windows/fs';\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 formt 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 = await fs.readJsonFile(npmPackagePath);\n\n return npmPackage;\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
|
};
|
|
@@ -29,7 +29,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
29
29
|
};
|
|
30
30
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
31
|
exports.writeManifestToFile = exports.parseManifest = exports.readManifestFromFile = void 0;
|
|
32
|
-
const fs_1 = __importDefault(require("fs"));
|
|
32
|
+
const fs_1 = __importDefault(require("@react-native-windows/fs"));
|
|
33
33
|
const path_1 = __importDefault(require("path"));
|
|
34
34
|
const t = __importStar(require("io-ts"));
|
|
35
35
|
const ThrowReporter_1 = require("io-ts/lib/ThrowReporter");
|
|
@@ -109,7 +109,7 @@ const ManifestType = t.type({
|
|
|
109
109
|
* @throws if the file is invalid or cannot be found
|
|
110
110
|
*/
|
|
111
111
|
async function readManifestFromFile(filePath) {
|
|
112
|
-
const json = (await fs_1.default.
|
|
112
|
+
const json = (await fs_1.default.readFile(filePath)).toString();
|
|
113
113
|
return parseManifest(json);
|
|
114
114
|
}
|
|
115
115
|
exports.readManifestFromFile = readManifestFromFile;
|
|
@@ -135,8 +135,8 @@ exports.parseManifest = parseManifest;
|
|
|
135
135
|
*/
|
|
136
136
|
async function writeManifestToFile(manifest, filePath) {
|
|
137
137
|
const json = JSON.stringify(manifest, null /*replacer*/, 2 /*space*/);
|
|
138
|
-
await fs_1.default.
|
|
139
|
-
await fs_1.default.
|
|
138
|
+
await fs_1.default.mkdir(path_1.default.dirname(filePath), { recursive: true });
|
|
139
|
+
await fs_1.default.writeFile(filePath, json);
|
|
140
140
|
}
|
|
141
141
|
exports.writeManifestToFile = writeManifestToFile;
|
|
142
142
|
//# 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 '@react-native-windows/fs';\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"]}
|
|
@@ -44,7 +44,7 @@ exports.UpgradeStrategies = {
|
|
|
44
44
|
if (!patchedFile) {
|
|
45
45
|
return { overrideName, filesWritten: false, hasConflicts };
|
|
46
46
|
}
|
|
47
|
-
const prettyPatched = hasConflicts && isutf8_1.default(patchedFile)
|
|
47
|
+
const prettyPatched = hasConflicts && (0, isutf8_1.default)(patchedFile)
|
|
48
48
|
? patchedFile
|
|
49
49
|
.toString('utf8')
|
|
50
50
|
.replace(/<<<<<<< ours/g, '<<<<<<< Upstream')
|
|
@@ -75,18 +75,18 @@ exports.UpgradeStrategies = {
|
|
|
75
75
|
*/
|
|
76
76
|
copyDirectory: (overrideDirectory, baseDirectory) => ({
|
|
77
77
|
upgrade: async (gitReactRepo, overrideRepo, newVersion) => {
|
|
78
|
-
const baseFiles = (await gitReactRepo.listFiles([`${baseDirectory}/**`], newVersion)).map(f => path_1.default.relative(baseDirectory, f));
|
|
79
|
-
const overrideFiles = (await overrideRepo.listFiles([`${overrideDirectory}/**`])).map(f => path_1.default.relative(overrideDirectory, f));
|
|
78
|
+
const baseFiles = (await gitReactRepo.listFiles([`${baseDirectory}/**`], newVersion)).map((f) => path_1.default.relative(baseDirectory, f));
|
|
79
|
+
const overrideFiles = (await overrideRepo.listFiles([`${overrideDirectory}/**`])).map((f) => path_1.default.relative(overrideDirectory, f));
|
|
80
80
|
// Note that this logic can lead emopty directories. This shouldn't
|
|
81
81
|
// matter in practice as Git won't track them.
|
|
82
|
-
const deleteTasks = lodash_1.default.difference(overrideFiles, baseFiles).map(f => overrideRepo.deleteFile(path_1.default.join(overrideDirectory, f)));
|
|
83
|
-
const baseRepo = FileRepository_1.bindVersion(gitReactRepo, newVersion);
|
|
82
|
+
const deleteTasks = lodash_1.default.difference(overrideFiles, baseFiles).map((f) => overrideRepo.deleteFile(path_1.default.join(overrideDirectory, f)));
|
|
83
|
+
const baseRepo = (0, FileRepository_1.bindVersion)(gitReactRepo, newVersion);
|
|
84
84
|
const copyTasks = baseFiles.map(async (f) => {
|
|
85
85
|
const basePath = path_1.default.join(baseDirectory, f);
|
|
86
86
|
const overridePath = path_1.default.join(overrideDirectory, f);
|
|
87
87
|
// Con't replace files of the same content but different line endings
|
|
88
|
-
if ((await Hash_1.hashFileOrDirectory(basePath, baseRepo)) !==
|
|
89
|
-
(await Hash_1.hashFileOrDirectory(overridePath, overrideRepo))) {
|
|
88
|
+
if ((await (0, Hash_1.hashFileOrDirectory)(basePath, baseRepo)) !==
|
|
89
|
+
(await (0, Hash_1.hashFileOrDirectory)(overridePath, overrideRepo))) {
|
|
90
90
|
const content = await baseRepo.readFile(basePath);
|
|
91
91
|
await overrideRepo.writeFile(overridePath, content);
|
|
92
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpgradeStrategy.js","sourceRoot":"","sources":["../src/UpgradeStrategy.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,oDAAuB;AACvB,gDAAwB;AACxB,qDAAqE;AAErE,iCAA2C;AAC3C,oDAA4B;AAqBf,QAAA,iBAAiB,GAAG;IAC/B;;OAEG;IACH,cAAc,EAAE,CAAC,YAAoB,EAAmB,EAAE,CAAC,CAAC;QAC1D,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACpB,YAAY;YACZ,YAAY,EAAE,KAAK;YACnB,YAAY,EAAE,KAAK;SACpB,CAAC;KACH,CAAC;IAEF;;;OAGG;IACH,aAAa,EAAE,CACb,YAAoB,EACpB,QAAgB,EAChB,WAAmB,EACF,EAAE,CAAC,CAAC;QACrB,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE;YACxE,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC7D,IAAI,UAAU,KAAK,IAAI,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,kBAAkB,YAAY,EAAE,CAAC,CAAC;aACnD;YAED,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,aAAa,CACjD,QAAQ,EACR,WAAW,EACX,UAAU,CACX,CAAC;YAEF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC3B,MAAM,IAAI,KAAK,CAAC,uBAAuB,YAAY,YAAY,CAAC,CAAC;aAClE;YAED,MAAM,EAAC,WAAW,EAAE,YAAY,EAAC,GAAG,MAAM,YAAY,CAAC,cAAc,CACnE,QAAQ,EACR,UAAU,EACV,UAAU,CACX,CAAC;YAEF,IAAI,CAAC,WAAW,EAAE;gBAChB,OAAO,EAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAC,CAAC;aAC1D;YAED,MAAM,aAAa,GACjB,YAAY,IAAI,gBAAM,
|
|
1
|
+
{"version":3,"file":"UpgradeStrategy.js","sourceRoot":"","sources":["../src/UpgradeStrategy.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 _ from 'lodash';\nimport path from 'path';\nimport {WritableFileRepository, bindVersion} from './FileRepository';\nimport GitReactFileRepository from './GitReactFileRepository';\nimport {hashFileOrDirectory} from './Hash';\nimport isUtf8 from 'isutf8';\n\nexport interface UpgradeResult {\n overrideName: string;\n filesWritten: boolean;\n hasConflicts: boolean;\n}\n\n/**\n * An UpgradeStrategy describes the process to upgrade an individual override\n * to a new version of the React Native source tree.\n */\nexport default interface UpgradeStrategy {\n upgrade(\n gitReactRepo: GitReactFileRepository,\n overrideRepo: WritableFileRepository,\n newVersion: string,\n allowConflicts: boolean,\n ): Promise<UpgradeResult>;\n}\n\nexport const UpgradeStrategies = {\n /**\n * No work needed to upgrade\n */\n assumeUpToDate: (overrideName: string): UpgradeStrategy => ({\n upgrade: async () => ({\n overrideName,\n filesWritten: false,\n hasConflicts: false,\n }),\n }),\n\n /**\n * Perform a three way merge of the original base file, the overriden version\n * of it, and the base file from a newwer version of React Native.\n */\n threeWayMerge: (\n overrideName: string,\n baseFile: string,\n baseVersion: string,\n ): UpgradeStrategy => ({\n upgrade: async (gitReactRepo, overrideRepo, newVersion, allowConflicts) => {\n const ovrContent = await overrideRepo.readFile(overrideName);\n if (ovrContent === null) {\n throw new Error(`Could not read ${overrideName}`);\n }\n\n const ovrAsPatch = await gitReactRepo.generatePatch(\n baseFile,\n baseVersion,\n ovrContent,\n );\n\n if (ovrAsPatch.length === 0) {\n throw new Error(`Generated patch for ${overrideName} was empty`);\n }\n\n const {patchedFile, hasConflicts} = await gitReactRepo.getPatchedFile(\n baseFile,\n newVersion,\n ovrAsPatch,\n );\n\n if (!patchedFile) {\n return {overrideName, filesWritten: false, hasConflicts};\n }\n\n const prettyPatched =\n hasConflicts && isUtf8(patchedFile)\n ? patchedFile\n .toString('utf8')\n .replace(/<<<<<<< ours/g, '<<<<<<< Upstream')\n .replace(/>>>>>>> theirs/g, '>>>>>>> Override')\n : patchedFile;\n\n if (!hasConflicts || allowConflicts) {\n await overrideRepo.writeFile(overrideName, prettyPatched);\n return {overrideName, filesWritten: true, hasConflicts};\n }\n\n return {overrideName, filesWritten: false, hasConflicts};\n },\n }),\n\n /**\n * Overwrite our override with base file contents\n */\n copyFile: (overrideName: string, baseFile: string): UpgradeStrategy => ({\n upgrade: async (gitReactRepo, overrideRepo, newVersion) => {\n const newContent = await gitReactRepo.readFile(baseFile, newVersion);\n if (newContent === null) {\n throw new Error(`Could not read ${baseFile}@${newVersion}`);\n }\n\n await overrideRepo.writeFile(overrideName, newContent);\n return {overrideName, filesWritten: true, hasConflicts: false};\n },\n }),\n\n /**\n * Overwrite our override with base file contents\n */\n copyDirectory: (\n overrideDirectory: string,\n baseDirectory: string,\n ): UpgradeStrategy => ({\n upgrade: async (gitReactRepo, overrideRepo, newVersion) => {\n const baseFiles = (\n await gitReactRepo.listFiles([`${baseDirectory}/**`], newVersion)\n ).map((f) => path.relative(baseDirectory, f));\n\n const overrideFiles = (\n await overrideRepo.listFiles([`${overrideDirectory}/**`])\n ).map((f) => path.relative(overrideDirectory, f));\n\n // Note that this logic can lead emopty directories. This shouldn't\n // matter in practice as Git won't track them.\n const deleteTasks = _.difference(overrideFiles, baseFiles).map((f) =>\n overrideRepo.deleteFile(path.join(overrideDirectory, f)),\n );\n\n const baseRepo = bindVersion(gitReactRepo, newVersion);\n const copyTasks = baseFiles.map(async (f) => {\n const basePath = path.join(baseDirectory, f);\n const overridePath = path.join(overrideDirectory, f);\n\n // Con't replace files of the same content but different line endings\n if (\n (await hashFileOrDirectory(basePath, baseRepo)) !==\n (await hashFileOrDirectory(overridePath, overrideRepo))\n ) {\n const content = await baseRepo.readFile(basePath);\n await overrideRepo.writeFile(overridePath, content!);\n }\n });\n\n await Promise.all([...deleteTasks, ...copyTasks]);\n\n return {\n overrideName: overrideDirectory,\n filesWritten: true,\n hasConflicts: false,\n };\n },\n }),\n};\n"]}
|
|
@@ -74,7 +74,7 @@ exports.ValidationStrategies = {
|
|
|
74
74
|
*/
|
|
75
75
|
baseUpToDate: (overrideName, base, expectedBaseHash) => ({
|
|
76
76
|
validate: async (_, reactRepo) => {
|
|
77
|
-
const hash = await Hash_1.hashFileOrDirectory(base, reactRepo);
|
|
77
|
+
const hash = await (0, Hash_1.hashFileOrDirectory)(base, reactRepo);
|
|
78
78
|
if (!hash) {
|
|
79
79
|
return [];
|
|
80
80
|
}
|
|
@@ -93,8 +93,8 @@ exports.ValidationStrategies = {
|
|
|
93
93
|
(await reactRepo.stat(base)) === 'none') {
|
|
94
94
|
return [];
|
|
95
95
|
}
|
|
96
|
-
const overrideHash = await Hash_1.hashFileOrDirectory(overrideName, overrideRepo);
|
|
97
|
-
const baseHash = await Hash_1.hashFileOrDirectory(base, reactRepo);
|
|
96
|
+
const overrideHash = await (0, Hash_1.hashFileOrDirectory)(overrideName, overrideRepo);
|
|
97
|
+
const baseHash = await (0, Hash_1.hashFileOrDirectory)(base, reactRepo);
|
|
98
98
|
return overrideHash === baseHash
|
|
99
99
|
? []
|
|
100
100
|
: [{ type: 'overrideDifferentFromBase', overrideName }];
|
|
@@ -114,8 +114,8 @@ exports.ValidationStrategies = {
|
|
|
114
114
|
// semantically indentical files. Do a whitespace insensitive compare to
|
|
115
115
|
// determine if there is a difference.
|
|
116
116
|
const hashOpts = { insensitivity: 'whitespace' };
|
|
117
|
-
const overrideHash = await Hash_1.hashFileOrDirectory(overrideName, overrideRepo, hashOpts);
|
|
118
|
-
const baseHash = await Hash_1.hashFileOrDirectory(base, reactRepo, hashOpts);
|
|
117
|
+
const overrideHash = await (0, Hash_1.hashFileOrDirectory)(overrideName, overrideRepo, hashOpts);
|
|
118
|
+
const baseHash = await (0, Hash_1.hashFileOrDirectory)(base, reactRepo, hashOpts);
|
|
119
119
|
return overrideHash === baseHash
|
|
120
120
|
? [{ type: 'overrideSameAsBase', overrideName }]
|
|
121
121
|
: [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationStrategy.js","sourceRoot":"","sources":["../src/ValidationStrategy.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,iCAAqD;AAmCxC,QAAA,oBAAoB,GAAG;IAClC;;OAEG;IACH,kBAAkB,EAAE,CAAC,YAAoB,EAAsB,EAAE,CAAC,CAAC;QACjE,QAAQ,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"ValidationStrategy.js","sourceRoot":"","sources":["../src/ValidationStrategy.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 {HashOpts, hashFileOrDirectory} from './Hash';\nimport {ReactFileRepository, WritableFileRepository} from './FileRepository';\n\nexport interface ValidationError {\n /**\n * Why did validation fail?\n */\n type:\n | 'missingFromManifest' // An override was found that isn't listed in the manifest\n | 'overrideNotFound' // The manifest describes a file which does not exist\n | 'baseNotFound' // The base file for a manifest entry cannot be found\n | 'expectedFile' // Expected the override to be a file but found a directory\n | 'expectedDirectory' // Expected the override to be a directory but found a file\n | 'outOfDate' // A base file has changed since the manifested version\n | 'overrideDifferentFromBase' // An override file is not an exact copy of the base file\n | 'overrideSameAsBase'; // An override file is an exact copy of the base file\n\n /**\n * What override failed validation\n */\n overrideName: string;\n}\n\n/**\n * A ValidationStrategy allows describing a process to ensure a specific\n * override meets constraints such as ensuring file existence, preventing\n * content modification, or being up to date.\n */\nexport default interface ValidationStrategy {\n validate(\n overrideRepo: WritableFileRepository,\n reactRepo: ReactFileRepository,\n ): Promise<ValidationError[]>;\n}\n\nexport const ValidationStrategies = {\n /**\n * Validate that an override file exists\n */\n overrideFileExists: (overrideName: string): ValidationStrategy => ({\n validate: async (overrideRepo) => {\n switch (await overrideRepo.stat(overrideName)) {\n case 'file':\n return [];\n case 'directory':\n return [{type: 'expectedFile', overrideName}];\n case 'none':\n return [{type: 'overrideNotFound', overrideName}];\n }\n },\n }),\n\n /**\n * Validate that a base file exists\n */\n baseFileExists: (\n overrideName: string,\n baseFile: string,\n ): ValidationStrategy => ({\n validate: async (_, reactRepo) => {\n switch (await reactRepo.stat(baseFile)) {\n case 'file':\n return [];\n case 'directory':\n return [{type: 'expectedFile', overrideName}];\n case 'none':\n return [{type: 'baseNotFound', overrideName}];\n }\n },\n }),\n\n /**\n * Validate that an override directory exists\n */\n overrideDirectoryExists: (overrideName: string): ValidationStrategy => ({\n validate: async (overrideRepo) => {\n switch (await overrideRepo.stat(overrideName)) {\n case 'file':\n return [{type: 'expectedDirectory', overrideName}];\n case 'directory':\n return [];\n case 'none':\n return [{type: 'overrideNotFound', overrideName}];\n }\n },\n }),\n\n /**\n * Validate that a base directory exists\n */\n baseDirectoryExists: (\n overrideName: string,\n baseDirectory: string,\n ): ValidationStrategy => ({\n validate: async (_, reactRepo) => {\n switch (await reactRepo.stat(baseDirectory)) {\n case 'file':\n return [{type: 'expectedDirectory', overrideName}];\n case 'directory':\n return [];\n case 'none':\n return [{type: 'baseNotFound', overrideName}];\n }\n },\n }),\n\n /**\n * Validate that a base file/folder matches an expected hash if it exists\n */\n baseUpToDate: (\n overrideName: string,\n base: string,\n expectedBaseHash: string,\n ): ValidationStrategy => ({\n validate: async (_, reactRepo) => {\n const hash = await hashFileOrDirectory(base, reactRepo);\n if (!hash) {\n return [];\n }\n\n return hash === expectedBaseHash\n ? []\n : [{type: 'outOfDate', overrideName}];\n },\n }),\n\n /**\n * Validate that an override meant to be a copy of a base file/folder has not\n * been tampered with\n */\n overrideCopyOfBase: (\n overrideName: string,\n base: string,\n ): ValidationStrategy => ({\n validate: async (overrideRepo, reactRepo) => {\n if (\n (await overrideRepo.stat(overrideName)) === 'none' ||\n (await reactRepo.stat(base)) === 'none'\n ) {\n return [];\n }\n\n const overrideHash = await hashFileOrDirectory(\n overrideName,\n overrideRepo,\n );\n const baseHash = await hashFileOrDirectory(base, reactRepo);\n return overrideHash === baseHash\n ? []\n : [{type: 'overrideDifferentFromBase', overrideName}];\n },\n }),\n\n /**\n * Validate that an override assumed to be different from its base is not\n * identical.\n */\n overrideDifferentFromBase: (\n overrideName: string,\n base: string,\n ): ValidationStrategy => ({\n validate: async (overrideRepo, reactRepo) => {\n if (\n (await overrideRepo.stat(overrideName)) === 'none' ||\n (await reactRepo.stat(base)) === 'none'\n ) {\n return [];\n }\n\n // There can be whitespace differences from merges that lead to\n // semantically indentical files. Do a whitespace insensitive compare to\n // determine if there is a difference.\n const hashOpts: HashOpts = {insensitivity: 'whitespace'};\n\n const overrideHash = await hashFileOrDirectory(\n overrideName,\n overrideRepo,\n hashOpts,\n );\n const baseHash = await hashFileOrDirectory(base, reactRepo, hashOpts);\n return overrideHash === baseHash\n ? [{type: 'overrideSameAsBase', overrideName}]\n : [];\n },\n }),\n};\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Microsoft Corporation.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*
|
|
5
|
+
* @format
|
|
6
|
+
*/
|
|
7
|
+
export declare function getAbbreviatedRef(reactNativeVersion: string): string;
|
|
8
|
+
export declare function fetchFullRef(reactNativeVersion: string, opts?: {
|
|
9
|
+
githubToken?: string;
|
|
10
|
+
}): Promise<string>;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Microsoft Corporation.
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
*
|
|
6
|
+
* @format
|
|
7
|
+
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.fetchFullRef = exports.getAbbreviatedRef = void 0;
|
|
13
|
+
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
14
|
+
const semver_1 = __importDefault(require("semver"));
|
|
15
|
+
function getAbbreviatedRef(reactNativeVersion) {
|
|
16
|
+
if (!semver_1.default.valid(reactNativeVersion)) {
|
|
17
|
+
throw new Error(`${reactNativeVersion} is not a valid semver version`);
|
|
18
|
+
}
|
|
19
|
+
if (semver_1.default.lt(reactNativeVersion, '0.0.0', { includePrerelease: true })) {
|
|
20
|
+
return extractHashFromNightlyVersion(reactNativeVersion);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
return `v${reactNativeVersion}`;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.getAbbreviatedRef = getAbbreviatedRef;
|
|
27
|
+
async function fetchFullRef(reactNativeVersion, opts) {
|
|
28
|
+
if (!semver_1.default.valid(reactNativeVersion)) {
|
|
29
|
+
throw new Error(`${reactNativeVersion} is not a valid semver version`);
|
|
30
|
+
}
|
|
31
|
+
if (semver_1.default.lt(reactNativeVersion, '0.0.0', { includePrerelease: true })) {
|
|
32
|
+
const abbrevHash = extractHashFromNightlyVersion(reactNativeVersion);
|
|
33
|
+
return fetchFullCommitHash(abbrevHash, opts);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
return `refs/tags/v${reactNativeVersion}`;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.fetchFullRef = fetchFullRef;
|
|
40
|
+
// Nightly build have progressed from
|
|
41
|
+
// 1. 0.0.0-<commitHash>
|
|
42
|
+
// 2. 0.0.0-<commitHash>-<date>-<time> (transitional)
|
|
43
|
+
// 3. 0.0.0-<date>-<time>-<commitHash>
|
|
44
|
+
function extractHashFromNightlyVersion(reactNativeVersion) {
|
|
45
|
+
// Several versions do not fall into the normal rule for positioning. Special
|
|
46
|
+
// case them.
|
|
47
|
+
const transitionalVersions = [
|
|
48
|
+
'0.0.0-2d2de744b-20210929-2246',
|
|
49
|
+
'0.0.0-1ee16fc2f-20210930-2008',
|
|
50
|
+
'0.0.0-34b7d22f3-20211001-2008',
|
|
51
|
+
'0.0.0-36f3bf2f5-20211002-2010',
|
|
52
|
+
'0.0.0-36f3bf2f5-20211003-2009',
|
|
53
|
+
'0.0.0-36f3bf2f5-20211004-2008',
|
|
54
|
+
'0.0.0-046b02628-20211005-2008',
|
|
55
|
+
'0.0.0-22801870f-20211006-2008',
|
|
56
|
+
'0.0.0-e612d3a11-20211007-2009',
|
|
57
|
+
'0.0.0-c901c43d1-20211008-2008',
|
|
58
|
+
'0.0.0-232d02c5f-20211009-2008',
|
|
59
|
+
'0.0.0-232d02c5f-20211009-2008',
|
|
60
|
+
'0.0.0-232d02c5f-20211009-2008',
|
|
61
|
+
'0.0.0-232d02c5f-20211009-2008',
|
|
62
|
+
'0.0.0-91adb761c-20211013-2010',
|
|
63
|
+
];
|
|
64
|
+
const preSegment = semver_1.default.prerelease(reactNativeVersion)[0];
|
|
65
|
+
const splitPre = preSegment.split('-');
|
|
66
|
+
// Handle #1
|
|
67
|
+
if (splitPre.length === 1) {
|
|
68
|
+
return splitPre[0];
|
|
69
|
+
}
|
|
70
|
+
// Handle #2
|
|
71
|
+
if (transitionalVersions.includes(reactNativeVersion)) {
|
|
72
|
+
return splitPre[0];
|
|
73
|
+
}
|
|
74
|
+
// Handle #3
|
|
75
|
+
return splitPre[2];
|
|
76
|
+
}
|
|
77
|
+
async function fetchFullCommitHash(abbrevHash, opts) {
|
|
78
|
+
// We cannot get abbreviated hash directly from a remote, so query Github's
|
|
79
|
+
// API for it.
|
|
80
|
+
const commitInfo = await (0, node_fetch_1.default)(`https://api.github.com/repos/facebook/react-native/commits/${abbrevHash}`, {
|
|
81
|
+
headers: {
|
|
82
|
+
'Content-Type': 'application/json',
|
|
83
|
+
'User-Agent': 'react-native-platform-override',
|
|
84
|
+
...((opts === null || opts === void 0 ? void 0 : opts.githubToken) && { Authorization: `Token ${opts.githubToken}` }),
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
if (!commitInfo.ok) {
|
|
88
|
+
throw new Error(`Unable to query Github for commit '${abbrevHash}' Status: '${commitInfo.statusText}'`);
|
|
89
|
+
}
|
|
90
|
+
return (await commitInfo.json()).sha;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=refFromVersion.js.map
|