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