react-native-platform-override 0.4.6 → 0.81.0-preview.10
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 +1 -2
- package/lib-commonjs/Api.d.ts +57 -56
- package/lib-commonjs/Api.js +187 -167
- package/lib-commonjs/Api.js.map +1 -1
- package/lib-commonjs/BatchingQueue.d.ts +15 -15
- package/lib-commonjs/BatchingQueue.js +57 -57
- package/lib-commonjs/BatchingQueue.js.map +1 -1
- package/lib-commonjs/Cli.d.ts +7 -7
- package/lib-commonjs/Cli.js +323 -291
- package/lib-commonjs/Cli.js.map +1 -1
- package/lib-commonjs/CrossProcessLock.d.ts +44 -44
- package/lib-commonjs/CrossProcessLock.js +147 -144
- package/lib-commonjs/CrossProcessLock.js.map +1 -1
- package/lib-commonjs/DiffStrategy.d.ts +24 -24
- package/lib-commonjs/DiffStrategy.js +34 -34
- package/lib-commonjs/DiffStrategy.js.map +1 -1
- package/lib-commonjs/FileRepository.d.ts +63 -62
- package/lib-commonjs/FileRepository.js +21 -21
- package/lib-commonjs/FileRepository.js.map +1 -1
- package/lib-commonjs/FileSearch.d.ts +21 -21
- package/lib-commonjs/FileSearch.js +77 -91
- package/lib-commonjs/FileSearch.js.map +1 -1
- package/lib-commonjs/FileSystemRepository.d.ts +21 -20
- package/lib-commonjs/FileSystemRepository.js +62 -59
- package/lib-commonjs/FileSystemRepository.js.map +1 -1
- package/lib-commonjs/GitReactFileRepository.d.ts +57 -58
- package/lib-commonjs/GitReactFileRepository.js +202 -208
- package/lib-commonjs/GitReactFileRepository.js.map +1 -1
- package/lib-commonjs/Hash.d.ts +34 -33
- package/lib-commonjs/Hash.js +81 -81
- package/lib-commonjs/Hash.js.map +1 -1
- package/lib-commonjs/Manifest.d.ts +80 -80
- package/lib-commonjs/Manifest.js +157 -154
- package/lib-commonjs/Manifest.js.map +1 -1
- package/lib-commonjs/Override.d.ts +182 -182
- package/lib-commonjs/Override.js +248 -245
- package/lib-commonjs/Override.js.map +1 -1
- package/lib-commonjs/OverrideFactory.d.ts +33 -33
- package/lib-commonjs/OverrideFactory.js +85 -70
- package/lib-commonjs/OverrideFactory.js.map +1 -1
- package/lib-commonjs/OverridePrompt.d.ts +30 -30
- package/lib-commonjs/OverridePrompt.js +130 -104
- package/lib-commonjs/OverridePrompt.js.map +1 -1
- package/lib-commonjs/PackageUtils.d.ts +15 -15
- package/lib-commonjs/PackageUtils.js +40 -38
- package/lib-commonjs/PackageUtils.js.map +1 -1
- package/lib-commonjs/PathUtils.d.ts +14 -14
- package/lib-commonjs/PathUtils.js +31 -28
- package/lib-commonjs/PathUtils.js.map +1 -1
- package/lib-commonjs/Serialized.d.ts +158 -158
- package/lib-commonjs/Serialized.js +145 -119
- package/lib-commonjs/Serialized.js.map +1 -1
- package/lib-commonjs/UpgradeStrategy.d.ts +39 -39
- package/lib-commonjs/UpgradeStrategy.js +102 -99
- package/lib-commonjs/UpgradeStrategy.js.map +1 -1
- package/lib-commonjs/ValidationStrategy.d.ts +57 -57
- package/lib-commonjs/ValidationStrategy.js +124 -124
- package/lib-commonjs/ValidationStrategy.js.map +1 -1
- package/lib-commonjs/refFromVersion.d.ts +10 -0
- package/lib-commonjs/refFromVersion.js +99 -0
- package/lib-commonjs/refFromVersion.js.map +1 -0
- package/lib-commonjs/scripts/generateManifest.d.ts +7 -7
- package/lib-commonjs/scripts/generateManifest.js +196 -170
- package/lib-commonjs/scripts/generateManifest.js.map +1 -1
- package/lib-commonjs/scripts/hashFile.d.ts +7 -7
- package/lib-commonjs/scripts/hashFile.js +17 -14
- package/lib-commonjs/scripts/hashFile.js.map +1 -1
- package/lib-commonjs/scripts/testLocks.d.ts +1 -1
- package/lib-commonjs/scripts/testLocks.js +29 -26
- package/lib-commonjs/scripts/testLocks.js.map +1 -1
- package/package.json +53 -43
- package/CHANGELOG.json +0 -524
- package/CHANGELOG.md +0 -230
package/lib-commonjs/Manifest.js
CHANGED
|
@@ -1,155 +1,158 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Copyright (c) Microsoft Corporation.
|
|
4
|
-
* Licensed under the MIT License.
|
|
5
|
-
*
|
|
6
|
-
* @format
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
this.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
this.
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
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
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
13
|
+
const path_1 = __importDefault(require("path"));
|
|
14
|
+
const Override_1 = require("./Override");
|
|
15
|
+
const async_1 = require("async");
|
|
16
|
+
const PathUtils_1 = require("./PathUtils");
|
|
17
|
+
/**
|
|
18
|
+
* Represents a collection of overrides listed in an on-disk manifest. Allows
|
|
19
|
+
* performing aggregate operations on the overrides.
|
|
20
|
+
*/
|
|
21
|
+
class Manifest {
|
|
22
|
+
/**
|
|
23
|
+
* Construct the manifest
|
|
24
|
+
*
|
|
25
|
+
* @param overrides List of overrides to evaluate
|
|
26
|
+
* @param opts Allows specifying globs to include or exclude paths to enforce
|
|
27
|
+
* exist in the manifest
|
|
28
|
+
*/
|
|
29
|
+
constructor(overrides, opts = {}) {
|
|
30
|
+
const uniquelyNamed = lodash_1.default.uniqBy(overrides, ovr => ovr.name());
|
|
31
|
+
if (uniquelyNamed.length !== overrides.length) {
|
|
32
|
+
throw new Error('Cannot construct a manifest with duplicate overrides');
|
|
33
|
+
}
|
|
34
|
+
this.includePatterns = opts.includePatterns;
|
|
35
|
+
this.excludePatterns = opts.excludePatterns;
|
|
36
|
+
this.baseVersion = opts.baseVersion;
|
|
37
|
+
this.overrides = lodash_1.default.clone(overrides);
|
|
38
|
+
}
|
|
39
|
+
static fromSerialized(man) {
|
|
40
|
+
const overrides = man.overrides.map(ovr => (0, Override_1.deserializeOverride)(ovr, { defaultBaseVersion: man.baseVersion }));
|
|
41
|
+
return new Manifest(overrides, {
|
|
42
|
+
includePatterns: man.includePatterns,
|
|
43
|
+
excludePatterns: man.excludePatterns,
|
|
44
|
+
baseVersion: man.baseVersion,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Check that overrides are accurately accounted for in the manifest. E.g.
|
|
49
|
+
* all files should be accounted for, and base files should be up to date
|
|
50
|
+
* with upstream.
|
|
51
|
+
*/
|
|
52
|
+
async validate(overrideRepo, reactRepo) {
|
|
53
|
+
const errors = [];
|
|
54
|
+
const globs = [
|
|
55
|
+
...(this.includePatterns || ['**']),
|
|
56
|
+
...(this.excludePatterns || []).map(p => '!' + p),
|
|
57
|
+
];
|
|
58
|
+
const overrideFiles = await overrideRepo.listFiles(globs);
|
|
59
|
+
const missingFromManifest = overrideFiles.filter(file => file !== 'overrides.json' &&
|
|
60
|
+
path_1.default.relative('node_modules', file).startsWith('..') &&
|
|
61
|
+
!this.overrides.some(override => override.includesFile(file)));
|
|
62
|
+
for (const missingFile of missingFromManifest) {
|
|
63
|
+
errors.push({ type: 'missingFromManifest', overrideName: missingFile });
|
|
64
|
+
}
|
|
65
|
+
const validationTasks = lodash_1.default.flatMap(this.overrides, ovr => ovr.validationStrategies());
|
|
66
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
67
|
+
await (0, async_1.eachLimit)(validationTasks, 30, async (task) => {
|
|
68
|
+
errors.push(...(await task.validate(overrideRepo, reactRepo)));
|
|
69
|
+
});
|
|
70
|
+
return errors.sort((a, b) => a.overrideName.localeCompare(b.overrideName, 'en'));
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Add an override to the manifest
|
|
74
|
+
*/
|
|
75
|
+
addOverride(override) {
|
|
76
|
+
if (this.hasOverride(override.name())) {
|
|
77
|
+
throw new Error(`Trying to add duplicate override '${override.name()}'`);
|
|
78
|
+
}
|
|
79
|
+
this.overrides.push(override);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Whether the manifest contains a given override
|
|
83
|
+
*/
|
|
84
|
+
hasOverride(overrideName) {
|
|
85
|
+
return this.overrides.some(ovr => ovr.name() === (0, PathUtils_1.normalizePath)(overrideName));
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Try to remove an override.
|
|
89
|
+
* @returns false if none is found with the given name
|
|
90
|
+
*/
|
|
91
|
+
removeOverride(overrideName) {
|
|
92
|
+
const idx = this.findOverrideIndex(overrideName);
|
|
93
|
+
if (idx === -1) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
this.overrides.splice(idx, 1);
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Returns the entry corresponding to the given override path, or null if none
|
|
101
|
+
* exists.
|
|
102
|
+
*/
|
|
103
|
+
findOverride(overrideName) {
|
|
104
|
+
const idx = this.findOverrideIndex(overrideName);
|
|
105
|
+
if (idx === -1) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
return this.overrides[idx];
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Updates an override entry to mark it as up-to-date in regards to its
|
|
112
|
+
* current base file.
|
|
113
|
+
*/
|
|
114
|
+
async markUpToDate(overrideName, overrideFactory) {
|
|
115
|
+
const override = this.findOverride(overrideName);
|
|
116
|
+
if (override === null) {
|
|
117
|
+
throw new Error(`Override '${overrideName}' does not exist`);
|
|
118
|
+
}
|
|
119
|
+
// Mutate the object instead of replacing by index because the index may no
|
|
120
|
+
// longer be the same after awaiting.
|
|
121
|
+
const upToDateOverride = await override.createUpdated(overrideFactory);
|
|
122
|
+
Object.assign(override, upToDateOverride);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Return a serialized representation of the manifest
|
|
126
|
+
*/
|
|
127
|
+
serialize() {
|
|
128
|
+
return {
|
|
129
|
+
includePatterns: this.includePatterns,
|
|
130
|
+
excludePatterns: this.excludePatterns,
|
|
131
|
+
baseVersion: this.baseVersion,
|
|
132
|
+
overrides: this.overrides
|
|
133
|
+
.sort((a, b) => a.name().localeCompare(b.name(), 'en'))
|
|
134
|
+
.map(override => override.serialize({ defaultBaseVersion: this.baseVersion })),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Returns the overrides in the manifest
|
|
139
|
+
*/
|
|
140
|
+
listOverrides() {
|
|
141
|
+
return lodash_1.default.clone(this.overrides);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Set the default baseVersion for the manifest
|
|
145
|
+
*/
|
|
146
|
+
setBaseVersion(baseVersion) {
|
|
147
|
+
this.baseVersion = baseVersion;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Find the index to a given override.
|
|
151
|
+
* @returns -1 if it cannot be found
|
|
152
|
+
*/
|
|
153
|
+
findOverrideIndex(overrideName) {
|
|
154
|
+
return this.overrides.findIndex(ovr => ovr.name() === (0, PathUtils_1.normalizePath)(overrideName));
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
exports.default = Manifest;
|
|
155
158
|
//# sourceMappingURL=Manifest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Manifest.js","sourceRoot":"","sources":["../src/Manifest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Manifest.js","sourceRoot":"","sources":["../src/Manifest.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 _ from 'lodash';\nimport path from 'path';\n\nimport Override, {deserializeOverride} from './Override';\nimport {ReactFileRepository, WritableFileRepository} from './FileRepository';\nimport OverrideFactory from './OverrideFactory';\nimport {ValidationError} from './ValidationStrategy';\nimport {eachLimit} from 'async';\nimport {normalizePath} from './PathUtils';\n\n/**\n * Represents a collection of overrides listed in an on-disk manifest. Allows\n * performing aggregate operations on the overrides.\n */\nexport default class Manifest {\n private readonly includePatterns?: string[];\n private readonly excludePatterns?: string[];\n private baseVersion?: string;\n private readonly overrides: Override[];\n\n /**\n * Construct the manifest\n *\n * @param overrides List of overrides to evaluate\n * @param opts Allows specifying globs to include or exclude paths to enforce\n * exist in the manifest\n */\n constructor(\n overrides: Override[],\n opts: {\n includePatterns?: string[];\n excludePatterns?: string[];\n baseVersion?: string;\n } = {},\n ) {\n const uniquelyNamed = _.uniqBy(overrides, ovr => ovr.name());\n if (uniquelyNamed.length !== overrides.length) {\n throw new Error('Cannot construct a manifest with duplicate overrides');\n }\n\n this.includePatterns = opts.includePatterns;\n this.excludePatterns = opts.excludePatterns;\n this.baseVersion = opts.baseVersion;\n this.overrides = _.clone(overrides);\n }\n\n static fromSerialized(man: Serialized.Manifest): Manifest {\n const overrides = man.overrides.map(ovr =>\n deserializeOverride(ovr, {defaultBaseVersion: man.baseVersion}),\n );\n return new Manifest(overrides, {\n includePatterns: man.includePatterns,\n excludePatterns: man.excludePatterns,\n baseVersion: man.baseVersion,\n });\n }\n\n /**\n * Check that overrides are accurately accounted for in the manifest. E.g.\n * all files should be accounted for, and base files should be up to date\n * with upstream.\n */\n async validate(\n overrideRepo: WritableFileRepository,\n reactRepo: ReactFileRepository,\n ): Promise<ValidationError[]> {\n const errors: ValidationError[] = [];\n\n const globs = [\n ...(this.includePatterns || ['**']),\n ...(this.excludePatterns || []).map(p => '!' + p),\n ];\n\n const overrideFiles = await overrideRepo.listFiles(globs);\n const missingFromManifest = overrideFiles.filter(\n file =>\n file !== 'overrides.json' &&\n path.relative('node_modules', file).startsWith('..') &&\n !this.overrides.some(override => override.includesFile(file)),\n );\n for (const missingFile of missingFromManifest) {\n errors.push({type: 'missingFromManifest', overrideName: missingFile});\n }\n\n const validationTasks = _.flatMap(this.overrides, ovr =>\n ovr.validationStrategies(),\n );\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n await eachLimit(validationTasks, 30, async task => {\n errors.push(...(await task.validate(overrideRepo, reactRepo)));\n });\n\n return errors.sort((a, b) =>\n a.overrideName.localeCompare(b.overrideName, 'en'),\n );\n }\n\n /**\n * Add an override to the manifest\n */\n addOverride(override: Override) {\n if (this.hasOverride(override.name())) {\n throw new Error(`Trying to add duplicate override '${override.name()}'`);\n }\n\n this.overrides.push(override);\n }\n\n /**\n * Whether the manifest contains a given override\n */\n hasOverride(overrideName: string): boolean {\n return this.overrides.some(\n ovr => ovr.name() === normalizePath(overrideName),\n );\n }\n\n /**\n * Try to remove an override.\n * @returns false if none is found with the given name\n */\n removeOverride(overrideName: string): boolean {\n const idx = this.findOverrideIndex(overrideName);\n if (idx === -1) {\n return false;\n }\n\n this.overrides.splice(idx, 1);\n return true;\n }\n\n /**\n * Returns the entry corresponding to the given override path, or null if none\n * exists.\n */\n findOverride(overrideName: string): Override | null {\n const idx = this.findOverrideIndex(overrideName);\n if (idx === -1) {\n return null;\n }\n\n return this.overrides[idx];\n }\n\n /**\n * Updates an override entry to mark it as up-to-date in regards to its\n * current base file.\n */\n async markUpToDate(overrideName: string, overrideFactory: OverrideFactory) {\n const override = this.findOverride(overrideName);\n if (override === null) {\n throw new Error(`Override '${overrideName}' does not exist`);\n }\n\n // Mutate the object instead of replacing by index because the index may no\n // longer be the same after awaiting.\n const upToDateOverride = await override.createUpdated(overrideFactory);\n Object.assign(override, upToDateOverride);\n }\n\n /**\n * Return a serialized representation of the manifest\n */\n serialize(): Serialized.Manifest {\n return {\n includePatterns: this.includePatterns,\n excludePatterns: this.excludePatterns,\n baseVersion: this.baseVersion,\n overrides: this.overrides\n .sort((a, b) => a.name().localeCompare(b.name(), 'en'))\n .map(override =>\n override.serialize({defaultBaseVersion: this.baseVersion}),\n ),\n };\n }\n\n /**\n * Returns the overrides in the manifest\n */\n listOverrides(): Override[] {\n return _.clone(this.overrides);\n }\n\n /**\n * Set the default baseVersion for the manifest\n */\n setBaseVersion(baseVersion?: string) {\n this.baseVersion = baseVersion;\n }\n\n /**\n * Find the index to a given override.\n * @returns -1 if it cannot be found\n */\n private findOverrideIndex(overrideName: string): number {\n return this.overrides.findIndex(\n ovr => ovr.name() === normalizePath(overrideName),\n );\n }\n}\n"]}
|