@expo/fingerprint 0.0.9 → 0.1.0
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/CHANGELOG.md +25 -0
- package/build/Fingerprint.d.ts +4 -0
- package/build/Fingerprint.js +11 -5
- package/build/Fingerprint.js.map +1 -1
- package/build/sourcer/Bare.js +21 -23
- package/build/sourcer/Bare.js.map +1 -1
- package/build/sourcer/Expo.d.ts +4 -0
- package/build/sourcer/Expo.js +13 -2
- package/build/sourcer/Expo.js.map +1 -1
- package/build/sourcer/PatchPackage.js.map +1 -1
- package/build/sourcer/Sourcer.js +1 -1
- package/build/sourcer/Sourcer.js.map +1 -1
- package/e2e/__tests__/__snapshots__/managed-test.ts.snap +2 -10
- package/e2e/__tests__/managed-test.ts +3 -12
- package/package.json +3 -13
- package/src/Fingerprint.ts +12 -3
- package/src/sourcer/Bare.ts +24 -24
- package/src/sourcer/Expo.ts +15 -2
- package/src/sourcer/PatchPackage.ts +1 -1
- package/src/sourcer/Sourcer.ts +2 -2
- package/src/sourcer/__tests__/Bare-test.ts +25 -2
- package/src/sourcer/__tests__/Expo-test.ts +48 -0
- package/src/sourcer/__tests__/__snapshots__/Bare-test.ts.snap +3 -11
- package/src/sourcer/__tests__/fixtures/RncliAutoLinking.json +9 -9
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## Unpublished
|
|
4
|
+
|
|
5
|
+
### 🛠 Breaking changes
|
|
6
|
+
|
|
7
|
+
### 🎉 New features
|
|
8
|
+
|
|
9
|
+
### 🐛 Bug fixes
|
|
10
|
+
|
|
11
|
+
### 💡 Others
|
|
12
|
+
|
|
13
|
+
## 0.1.0 — 2023-08-29
|
|
14
|
+
|
|
15
|
+
### 🛠 Breaking changes
|
|
16
|
+
|
|
17
|
+
- The fingerprint result is changed since this version. ([24097](https://github.com/expo/expo/pull/24097) by [@kudo](https://github.com/kudo))
|
|
18
|
+
|
|
19
|
+
### 🎉 New features
|
|
20
|
+
|
|
21
|
+
- Added `diffFingerprints()` to support diff for two fingerprints. ([24097](https://github.com/expo/expo/pull/24097) by [@kudo](https://github.com/kudo))
|
|
22
|
+
|
|
23
|
+
### 🐛 Bug fixes
|
|
24
|
+
|
|
25
|
+
- Fixed non-deterministic hash if packages hoisted from monorepo. ([24097](https://github.com/expo/expo/pull/24097) by [@kudo](https://github.com/kudo))
|
package/build/Fingerprint.d.ts
CHANGED
|
@@ -11,3 +11,7 @@ export declare function createProjectHashAsync(projectRoot: string, options?: Op
|
|
|
11
11
|
* Differentiate given `fingerprint` with the current project fingerprint state
|
|
12
12
|
*/
|
|
13
13
|
export declare function diffFingerprintChangesAsync(fingerprint: Fingerprint, projectRoot: string, options?: Options): Promise<FingerprintSource[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Differentiate two fingerprints
|
|
16
|
+
*/
|
|
17
|
+
export declare function diffFingerprints(fingerprint1: Fingerprint, fingerprint2: Fingerprint): FingerprintSource[];
|
package/build/Fingerprint.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.diffFingerprintChangesAsync = exports.createProjectHashAsync = exports.createFingerprintAsync = void 0;
|
|
3
|
+
exports.diffFingerprints = exports.diffFingerprintChangesAsync = exports.createProjectHashAsync = exports.createFingerprintAsync = void 0;
|
|
4
4
|
const Dedup_1 = require("./Dedup");
|
|
5
5
|
const Options_1 = require("./Options");
|
|
6
6
|
const Sort_1 = require("./Sort");
|
|
@@ -33,10 +33,16 @@ async function diffFingerprintChangesAsync(fingerprint, projectRoot, options) {
|
|
|
33
33
|
if (fingerprint.hash === newFingerprint.hash) {
|
|
34
34
|
return [];
|
|
35
35
|
}
|
|
36
|
-
|
|
37
|
-
return !fingerprint.sources.find((item) => item.type === newItem.type && item.hash === newItem.hash);
|
|
38
|
-
});
|
|
39
|
-
return result;
|
|
36
|
+
return diffFingerprints(fingerprint, newFingerprint);
|
|
40
37
|
}
|
|
41
38
|
exports.diffFingerprintChangesAsync = diffFingerprintChangesAsync;
|
|
39
|
+
/**
|
|
40
|
+
* Differentiate two fingerprints
|
|
41
|
+
*/
|
|
42
|
+
function diffFingerprints(fingerprint1, fingerprint2) {
|
|
43
|
+
return fingerprint2.sources.filter((newItem) => {
|
|
44
|
+
return !fingerprint1.sources.find((item) => item.type === newItem.type && item.hash === newItem.hash);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
exports.diffFingerprints = diffFingerprints;
|
|
42
48
|
//# sourceMappingURL=Fingerprint.js.map
|
package/build/Fingerprint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fingerprint.js","sourceRoot":"","sources":["../src/Fingerprint.ts"],"names":[],"mappings":";;;AAAA,mCAAuC;AAEvC,uCAA6C;AAC7C,iCAAqC;AACrC,sCAAgE;AAChE,+CAAwD;AAExD;;GAEG;AACI,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,OAAiB;IAEjB,MAAM,IAAI,GAAG,IAAA,0BAAgB,EAAC,OAAO,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,IAAA,6BAAmB,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC7D,MAAM,iBAAiB,GAAG,IAAA,kBAAW,EAAC,IAAA,oBAAY,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,MAAM,IAAA,wCAAiC,EAAC,iBAAiB,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAClG,OAAO,WAAW,CAAC;AACrB,CAAC;AATD,wDASC;AAED;;GAEG;AACI,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,OAAiB;IAEjB,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACvE,OAAO,WAAW,CAAC,IAAI,CAAC;AAC1B,CAAC;AAND,wDAMC;AAED;;GAEG;AACI,KAAK,UAAU,2BAA2B,CAC/C,WAAwB,EACxB,WAAmB,EACnB,OAAiB;IAEjB,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1E,IAAI,WAAW,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,EAAE;QAC5C,OAAO,EAAE,CAAC;KACX;IACD,
|
|
1
|
+
{"version":3,"file":"Fingerprint.js","sourceRoot":"","sources":["../src/Fingerprint.ts"],"names":[],"mappings":";;;AAAA,mCAAuC;AAEvC,uCAA6C;AAC7C,iCAAqC;AACrC,sCAAgE;AAChE,+CAAwD;AAExD;;GAEG;AACI,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,OAAiB;IAEjB,MAAM,IAAI,GAAG,IAAA,0BAAgB,EAAC,OAAO,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,IAAA,6BAAmB,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC7D,MAAM,iBAAiB,GAAG,IAAA,kBAAW,EAAC,IAAA,oBAAY,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,MAAM,IAAA,wCAAiC,EAAC,iBAAiB,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAClG,OAAO,WAAW,CAAC;AACrB,CAAC;AATD,wDASC;AAED;;GAEG;AACI,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,OAAiB;IAEjB,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACvE,OAAO,WAAW,CAAC,IAAI,CAAC;AAC1B,CAAC;AAND,wDAMC;AAED;;GAEG;AACI,KAAK,UAAU,2BAA2B,CAC/C,WAAwB,EACxB,WAAmB,EACnB,OAAiB;IAEjB,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1E,IAAI,WAAW,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,EAAE;QAC5C,OAAO,EAAE,CAAC;KACX;IACD,OAAO,gBAAgB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AACvD,CAAC;AAVD,kEAUC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,YAAyB,EACzB,YAAyB;IAEzB,OAAO,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7C,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAC/B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CACnE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AATD,4CASC"}
|
package/build/sourcer/Bare.js
CHANGED
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getRncliAutolinkingSourcesAsync = exports.getGitIgnoreSourcesAsync = exports.getPackageJsonScriptSourcesAsync = exports.getBareIosSourcesAsync = exports.getBareAndroidSourcesAsync = void 0;
|
|
7
7
|
const spawn_async_1 = __importDefault(require("@expo/spawn-async"));
|
|
8
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
9
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
10
|
const path_1 = __importDefault(require("path"));
|
|
10
11
|
const resolve_from_1 = __importDefault(require("resolve-from"));
|
|
@@ -71,22 +72,20 @@ async function getRncliAutolinkingSourcesAsync(projectRoot, options) {
|
|
|
71
72
|
const config = JSON.parse(stdout);
|
|
72
73
|
const { root } = config;
|
|
73
74
|
const reasons = ['bareRncliAutolinking'];
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
const autolinkingConfig = {};
|
|
76
|
+
for (const [depName, depData] of Object.entries(config.dependencies)) {
|
|
77
|
+
stripRncliAutolinkingAbsolutePaths(depData, root);
|
|
78
|
+
const filePath = depData.root;
|
|
77
79
|
debug(`Adding react-native-cli autolinking dir - ${chalk_1.default.dim(filePath)}`);
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
if (platformData) {
|
|
81
|
-
results.push({
|
|
82
|
-
type: 'contents',
|
|
83
|
-
id: `rncliAutolinkingConfig:${depData.name}:${platform}`,
|
|
84
|
-
contents: platformData,
|
|
85
|
-
reasons,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
}
|
|
80
|
+
results.push({ type: 'dir', filePath, reasons });
|
|
81
|
+
autolinkingConfig[depName] = depData;
|
|
89
82
|
}
|
|
83
|
+
results.push({
|
|
84
|
+
type: 'contents',
|
|
85
|
+
id: 'rncliAutolinkingConfig',
|
|
86
|
+
contents: JSON.stringify(autolinkingConfig),
|
|
87
|
+
reasons,
|
|
88
|
+
});
|
|
90
89
|
return results;
|
|
91
90
|
}
|
|
92
91
|
catch {
|
|
@@ -94,15 +93,14 @@ async function getRncliAutolinkingSourcesAsync(projectRoot, options) {
|
|
|
94
93
|
}
|
|
95
94
|
}
|
|
96
95
|
exports.getRncliAutolinkingSourcesAsync = getRncliAutolinkingSourcesAsync;
|
|
97
|
-
function
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
96
|
+
function stripRncliAutolinkingAbsolutePaths(dependency, root) {
|
|
97
|
+
(0, assert_1.default)(dependency.root);
|
|
98
|
+
const dependencyRoot = dependency.root;
|
|
99
|
+
dependency.root = path_1.default.relative(root, dependencyRoot);
|
|
100
|
+
for (const platformData of Object.values(dependency.platforms)) {
|
|
101
|
+
for (const [key, value] of Object.entries(platformData)) {
|
|
102
|
+
platformData[key] = value.startsWith?.(dependencyRoot) ? path_1.default.relative(root, value) : value;
|
|
103
|
+
}
|
|
105
104
|
}
|
|
106
|
-
return JSON.stringify(json);
|
|
107
105
|
}
|
|
108
106
|
//# sourceMappingURL=Bare.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bare.js","sourceRoot":"","sources":["../../src/sourcer/Bare.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA2C;AAC3C,kDAA0B;AAC1B,gDAAwB;AACxB,gEAAuC;
|
|
1
|
+
{"version":3,"file":"Bare.js","sourceRoot":"","sources":["../../src/sourcer/Bare.ts"],"names":[],"mappings":"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"}
|
package/build/sourcer/Expo.d.ts
CHANGED
|
@@ -3,3 +3,7 @@ export declare function getExpoConfigSourcesAsync(projectRoot: string, options:
|
|
|
3
3
|
export declare function getEasBuildSourcesAsync(projectRoot: string, options: NormalizedOptions): Promise<HashSource[]>;
|
|
4
4
|
export declare function getExpoAutolinkingAndroidSourcesAsync(projectRoot: string, options: NormalizedOptions): Promise<HashSource[]>;
|
|
5
5
|
export declare function getExpoAutolinkingIosSourcesAsync(projectRoot: string, options: NormalizedOptions): Promise<HashSource[]>;
|
|
6
|
+
/**
|
|
7
|
+
* Sort the expo-modules-autolinking android config to make it stable from hashing.
|
|
8
|
+
*/
|
|
9
|
+
export declare function sortExpoAutolinkingAndroidConfig(config: Record<string, any>): Record<string, any>;
|
package/build/sourcer/Expo.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getExpoAutolinkingIosSourcesAsync = exports.getExpoAutolinkingAndroidSourcesAsync = exports.getEasBuildSourcesAsync = exports.getExpoConfigSourcesAsync = void 0;
|
|
6
|
+
exports.sortExpoAutolinkingAndroidConfig = exports.getExpoAutolinkingIosSourcesAsync = exports.getExpoAutolinkingAndroidSourcesAsync = exports.getEasBuildSourcesAsync = exports.getExpoConfigSourcesAsync = void 0;
|
|
7
7
|
const spawn_async_1 = __importDefault(require("@expo/spawn-async"));
|
|
8
8
|
const assert_1 = __importDefault(require("assert"));
|
|
9
9
|
const chalk_1 = __importDefault(require("chalk"));
|
|
@@ -120,7 +120,7 @@ async function getExpoAutolinkingAndroidSourcesAsync(projectRoot, options) {
|
|
|
120
120
|
const reasons = ['expoAutolinkingAndroid'];
|
|
121
121
|
const results = [];
|
|
122
122
|
const { stdout } = await (0, spawn_async_1.default)('npx', ['expo-modules-autolinking', 'resolve', '-p', 'android', '--json'], { cwd: projectRoot });
|
|
123
|
-
const config = JSON.parse(stdout);
|
|
123
|
+
const config = sortExpoAutolinkingAndroidConfig(JSON.parse(stdout));
|
|
124
124
|
for (const module of config.modules) {
|
|
125
125
|
for (const project of module.projects) {
|
|
126
126
|
const filePath = path_1.default.relative(projectRoot, project.sourceDir);
|
|
@@ -172,4 +172,15 @@ async function getExpoAutolinkingIosSourcesAsync(projectRoot, options) {
|
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
exports.getExpoAutolinkingIosSourcesAsync = getExpoAutolinkingIosSourcesAsync;
|
|
175
|
+
/**
|
|
176
|
+
* Sort the expo-modules-autolinking android config to make it stable from hashing.
|
|
177
|
+
*/
|
|
178
|
+
function sortExpoAutolinkingAndroidConfig(config) {
|
|
179
|
+
for (const module of config.modules) {
|
|
180
|
+
// Sort the projects by project.name
|
|
181
|
+
module.projects.sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0);
|
|
182
|
+
}
|
|
183
|
+
return config;
|
|
184
|
+
}
|
|
185
|
+
exports.sortExpoAutolinkingAndroidConfig = sortExpoAutolinkingAndroidConfig;
|
|
175
186
|
//# sourceMappingURL=Expo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Expo.js","sourceRoot":"","sources":["../../src/sourcer/Expo.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA2C;AAC3C,oDAA4B;AAC5B,kDAA0B;AAE1B,sDAA6B;AAC7B,gDAAwB;AACxB,gEAAuC;
|
|
1
|
+
{"version":3,"file":"Expo.js","sourceRoot":"","sources":["../../src/sourcer/Expo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PatchPackage.js","sourceRoot":"","sources":["../../src/sourcer/PatchPackage.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;
|
|
1
|
+
{"version":3,"file":"PatchPackage.js","sourceRoot":"","sources":["../../src/sourcer/PatchPackage.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,mCAAsD;AAGtD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,uCAAuC,CAAC,CAAC;AAEjE,KAAK,UAAU,2BAA2B,CAC/C,WAAmB,EACnB,OAA0B;IAE1B,MAAM,MAAM,GAAG,MAAM,IAAA,mCAA2B,EAAC,WAAW,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACzF,IAAI,MAAM,IAAI,IAAI,EAAE;QAClB,KAAK,CAAC,gBAAgB,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,MAAM,CAAC,CAAC;KACjB;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAVD,kEAUC"}
|
package/build/sourcer/Sourcer.js
CHANGED
|
@@ -5,10 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getHashSourcesAsync = void 0;
|
|
7
7
|
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
-
const Profile_1 = require("../utils/Profile");
|
|
9
8
|
const Bare_1 = require("./Bare");
|
|
10
9
|
const Expo_1 = require("./Expo");
|
|
11
10
|
const PatchPackage_1 = require("./PatchPackage");
|
|
11
|
+
const Profile_1 = require("../utils/Profile");
|
|
12
12
|
const debug = require('debug')('expo:fingerprint:sourcer:Sourcer');
|
|
13
13
|
async function getHashSourcesAsync(projectRoot, options) {
|
|
14
14
|
const results = await Promise.all([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sourcer.js","sourceRoot":"","sources":["../../src/sourcer/Sourcer.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;
|
|
1
|
+
{"version":3,"file":"Sourcer.js","sourceRoot":"","sources":["../../src/sourcer/Sourcer.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,iCAMgB;AAChB,iCAKgB;AAChB,iDAA6D;AAE7D,8CAA2C;AAE3C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,kCAAkC,CAAC,CAAC;AAE5D,KAAK,UAAU,mBAAmB,CACvC,WAAmB,EACnB,OAA0B;IAE1B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAChC,OAAO;QACP,IAAA,iBAAO,EAAC,4CAAqC,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC;QACpE,IAAA,iBAAO,EAAC,wCAAiC,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC;QAChE,IAAA,iBAAO,EAAC,gCAAyB,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC;QACxD,IAAA,iBAAO,EAAC,8BAAuB,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC;QAEtD,qBAAqB;QACrB,IAAA,iBAAO,EAAC,+BAAwB,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC;QACvD,IAAA,iBAAO,EAAC,uCAAgC,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC;QAE/D,oBAAoB;QACpB,IAAA,iBAAO,EAAC,iCAA0B,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC;QACzD,IAAA,iBAAO,EAAC,6BAAsB,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC;QAErD,qBAAqB;QACrB,IAAA,iBAAO,EAAC,sCAA+B,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC;QAE9D,gBAAgB;QAChB,IAAA,iBAAO,EAAC,0CAA2B,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC;KAC3D,CAAC,CAAC;IAEH,gBAAgB;IAChB,IAAI,OAAO,CAAC,YAAY,EAAE;QACxB,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,YAAY,EAAE;YACzC,KAAK,CAAC,yBAAyB,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;SACrE;QACD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;KACpC;IAED,kBAAkB;IAClB,OAAQ,EAAmB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC;AACjD,CAAC;AApCD,kDAoCC"}
|
|
@@ -181,16 +181,8 @@ exports[`getHashSourcesAsync - managed project should match snapshot 1`] = `
|
|
|
181
181
|
"type": "dir",
|
|
182
182
|
},
|
|
183
183
|
{
|
|
184
|
-
"contents": "{"sourceDir":"node_modules/expo/android","packageImportPath":"import expo.modules.ExpoModulesPackage;","packageInstance":"new ExpoModulesPackage()","buildTypes":[],"componentDescriptors":[],"androidMkPath":"node_modules/expo/android/build/generated/source/codegen/jni/Android.mk","cmakeListsPath":"node_modules/expo/android/build/generated/source/codegen/jni/CMakeLists.txt"}",
|
|
185
|
-
"id": "rncliAutolinkingConfig
|
|
186
|
-
"reasons": [
|
|
187
|
-
"bareRncliAutolinking",
|
|
188
|
-
],
|
|
189
|
-
"type": "contents",
|
|
190
|
-
},
|
|
191
|
-
{
|
|
192
|
-
"contents": "{"podspecPath":"node_modules/expo/Expo.podspec","configurations":[],"scriptPhases":[]}",
|
|
193
|
-
"id": "rncliAutolinkingConfig:expo:ios",
|
|
184
|
+
"contents": "{"expo":{"root":"node_modules/expo","name":"expo","platforms":{"ios":{"podspecPath":"node_modules/expo/Expo.podspec","configurations":[],"scriptPhases":[]},"android":{"sourceDir":"node_modules/expo/android","packageImportPath":"import expo.modules.ExpoModulesPackage;","packageInstance":"new ExpoModulesPackage()","buildTypes":[],"componentDescriptors":[],"androidMkPath":"node_modules/expo/android/build/generated/source/codegen/jni/Android.mk","cmakeListsPath":"node_modules/expo/android/build/generated/source/codegen/jni/CMakeLists.txt"}}}}",
|
|
185
|
+
"id": "rncliAutolinkingConfig",
|
|
194
186
|
"reasons": [
|
|
195
187
|
"bareRncliAutolinking",
|
|
196
188
|
],
|
|
@@ -110,18 +110,9 @@ describe('managed project test', () => {
|
|
|
110
110
|
"type": "dir",
|
|
111
111
|
},
|
|
112
112
|
{
|
|
113
|
-
"contents": "{"sourceDir":"node_modules/@react-native-community/netinfo/android","packageImportPath":"import com.reactnativecommunity.netinfo.NetInfoPackage;","packageInstance":"new NetInfoPackage()","buildTypes":[],"componentDescriptors":[],"
|
|
114
|
-
"hash": "
|
|
115
|
-
"id": "rncliAutolinkingConfig
|
|
116
|
-
"reasons": [
|
|
117
|
-
"bareRncliAutolinking",
|
|
118
|
-
],
|
|
119
|
-
"type": "contents",
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
"contents": "{"podspecPath":"node_modules/@react-native-community/netinfo/react-native-netinfo.podspec","configurations":[],"scriptPhases":[]}",
|
|
123
|
-
"hash": "40eebce5caf94df11096238a5a2ca648ea9f242e",
|
|
124
|
-
"id": "rncliAutolinkingConfig:@react-native-community/netinfo:ios",
|
|
113
|
+
"contents": "{"@react-native-community/netinfo":{"root":"node_modules/@react-native-community/netinfo","name":"@react-native-community/netinfo","platforms":{"ios":{"podspecPath":"node_modules/@react-native-community/netinfo/react-native-netinfo.podspec","configurations":[],"scriptPhases":[]},"android":{"sourceDir":"node_modules/@react-native-community/netinfo/android","packageImportPath":"import com.reactnativecommunity.netinfo.NetInfoPackage;","packageInstance":"new NetInfoPackage()","buildTypes":[],"componentDescriptors":[],"cmakeListsPath":"node_modules/@react-native-community/netinfo/android/build/generated/source/codegen/jni/CMakeLists.txt"}}},"expo":{"root":"node_modules/expo","name":"expo","platforms":{"ios":{"podspecPath":"node_modules/expo/Expo.podspec","configurations":[],"scriptPhases":[]},"android":{"sourceDir":"node_modules/expo/android","packageImportPath":"import expo.modules.ExpoModulesPackage;","packageInstance":"new ExpoModulesPackage()","buildTypes":[],"componentDescriptors":[],"cmakeListsPath":"node_modules/expo/android/build/generated/source/codegen/jni/CMakeLists.txt"}}}}",
|
|
114
|
+
"hash": "ac75722bd87eb0189440be83faa2249079da5839",
|
|
115
|
+
"id": "rncliAutolinkingConfig",
|
|
125
116
|
"reasons": [
|
|
126
117
|
"bareRncliAutolinking",
|
|
127
118
|
],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/fingerprint",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "A library to generate a fingerprint from a React Native project",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -45,18 +45,8 @@
|
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@types/find-up": "^4.0.0",
|
|
48
|
-
"@types/jest": "^29.2.1",
|
|
49
|
-
"@types/rimraf": "^3.0.0",
|
|
50
|
-
"eslint": "^8.29.0",
|
|
51
|
-
"eslint-config-universe": "^11.1.0",
|
|
52
|
-
"expo": "^49.0.0-alpha.1",
|
|
53
48
|
"glob": "^7.1.7",
|
|
54
|
-
"
|
|
55
|
-
"jest-watch-typeahead": "2.2.1",
|
|
56
|
-
"memfs": "^3.4.12",
|
|
57
|
-
"rimraf": "^3.0.2",
|
|
58
|
-
"temp-dir": "^2.0.0",
|
|
59
|
-
"typescript": "^5.1.3"
|
|
49
|
+
"temp-dir": "^2.0.0"
|
|
60
50
|
},
|
|
61
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "1f5e9f77f22e5d6a464d34194236684a45fcf322"
|
|
62
52
|
}
|
package/src/Fingerprint.ts
CHANGED
|
@@ -42,10 +42,19 @@ export async function diffFingerprintChangesAsync(
|
|
|
42
42
|
if (fingerprint.hash === newFingerprint.hash) {
|
|
43
43
|
return [];
|
|
44
44
|
}
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
return diffFingerprints(fingerprint, newFingerprint);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Differentiate two fingerprints
|
|
50
|
+
*/
|
|
51
|
+
export function diffFingerprints(
|
|
52
|
+
fingerprint1: Fingerprint,
|
|
53
|
+
fingerprint2: Fingerprint
|
|
54
|
+
): FingerprintSource[] {
|
|
55
|
+
return fingerprint2.sources.filter((newItem) => {
|
|
56
|
+
return !fingerprint1.sources.find(
|
|
47
57
|
(item) => item.type === newItem.type && item.hash === newItem.hash
|
|
48
58
|
);
|
|
49
59
|
});
|
|
50
|
-
return result;
|
|
51
60
|
}
|
package/src/sourcer/Bare.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import spawnAsync from '@expo/spawn-async';
|
|
2
|
+
import assert from 'assert';
|
|
2
3
|
import chalk from 'chalk';
|
|
3
4
|
import path from 'path';
|
|
4
5
|
import resolveFrom from 'resolve-from';
|
|
5
6
|
|
|
6
|
-
import type { HashSource, NormalizedOptions, Platform } from '../Fingerprint.types';
|
|
7
7
|
import { getFileBasedHashSourceAsync } from './Utils';
|
|
8
|
+
import type { HashSource, NormalizedOptions } from '../Fingerprint.types';
|
|
8
9
|
|
|
9
10
|
const debug = require('debug')('expo:fingerprint:sourcer:Bare');
|
|
10
11
|
|
|
@@ -80,36 +81,35 @@ export async function getRncliAutolinkingSourcesAsync(
|
|
|
80
81
|
const config = JSON.parse(stdout);
|
|
81
82
|
const { root } = config;
|
|
82
83
|
const reasons = ['bareRncliAutolinking'];
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
const autolinkingConfig: Record<string, any> = {};
|
|
85
|
+
for (const [depName, depData] of Object.entries<any>(config.dependencies)) {
|
|
86
|
+
stripRncliAutolinkingAbsolutePaths(depData, root);
|
|
87
|
+
const filePath = depData.root;
|
|
86
88
|
debug(`Adding react-native-cli autolinking dir - ${chalk.dim(filePath)}`);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
results.push({
|
|
91
|
-
type: 'contents',
|
|
92
|
-
id: `rncliAutolinkingConfig:${depData.name}:${platform}`,
|
|
93
|
-
contents: platformData,
|
|
94
|
-
reasons,
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
}
|
|
89
|
+
results.push({ type: 'dir', filePath, reasons });
|
|
90
|
+
|
|
91
|
+
autolinkingConfig[depName] = depData;
|
|
98
92
|
}
|
|
93
|
+
|
|
94
|
+
results.push({
|
|
95
|
+
type: 'contents',
|
|
96
|
+
id: 'rncliAutolinkingConfig',
|
|
97
|
+
contents: JSON.stringify(autolinkingConfig),
|
|
98
|
+
reasons,
|
|
99
|
+
});
|
|
99
100
|
return results;
|
|
100
101
|
} catch {
|
|
101
102
|
return [];
|
|
102
103
|
}
|
|
103
104
|
}
|
|
104
105
|
|
|
105
|
-
function
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
106
|
+
function stripRncliAutolinkingAbsolutePaths(dependency: any, root: string): void {
|
|
107
|
+
assert(dependency.root);
|
|
108
|
+
const dependencyRoot = dependency.root;
|
|
109
|
+
dependency.root = path.relative(root, dependencyRoot);
|
|
110
|
+
for (const platformData of Object.values<any>(dependency.platforms)) {
|
|
111
|
+
for (const [key, value] of Object.entries<any>(platformData)) {
|
|
112
|
+
platformData[key] = value.startsWith?.(dependencyRoot) ? path.relative(root, value) : value;
|
|
113
|
+
}
|
|
113
114
|
}
|
|
114
|
-
return JSON.stringify(json);
|
|
115
115
|
}
|
package/src/sourcer/Expo.ts
CHANGED
|
@@ -6,8 +6,8 @@ import findUp from 'find-up';
|
|
|
6
6
|
import path from 'path';
|
|
7
7
|
import resolveFrom from 'resolve-from';
|
|
8
8
|
|
|
9
|
-
import type { HashSource, NormalizedOptions } from '../Fingerprint.types';
|
|
10
9
|
import { getFileBasedHashSourceAsync } from './Utils';
|
|
10
|
+
import type { HashSource, NormalizedOptions } from '../Fingerprint.types';
|
|
11
11
|
|
|
12
12
|
const debug = require('debug')('expo:fingerprint:sourcer:Expo');
|
|
13
13
|
|
|
@@ -158,7 +158,7 @@ export async function getExpoAutolinkingAndroidSourcesAsync(
|
|
|
158
158
|
['expo-modules-autolinking', 'resolve', '-p', 'android', '--json'],
|
|
159
159
|
{ cwd: projectRoot }
|
|
160
160
|
);
|
|
161
|
-
const config = JSON.parse(stdout);
|
|
161
|
+
const config = sortExpoAutolinkingAndroidConfig(JSON.parse(stdout));
|
|
162
162
|
for (const module of config.modules) {
|
|
163
163
|
for (const project of module.projects) {
|
|
164
164
|
const filePath = path.relative(projectRoot, project.sourceDir);
|
|
@@ -215,3 +215,16 @@ export async function getExpoAutolinkingIosSourcesAsync(
|
|
|
215
215
|
return [];
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Sort the expo-modules-autolinking android config to make it stable from hashing.
|
|
221
|
+
*/
|
|
222
|
+
export function sortExpoAutolinkingAndroidConfig(config: Record<string, any>): Record<string, any> {
|
|
223
|
+
for (const module of config.modules) {
|
|
224
|
+
// Sort the projects by project.name
|
|
225
|
+
module.projects.sort((a: Record<string, any>, b: Record<string, any>) =>
|
|
226
|
+
a.name < b.name ? -1 : a.name > b.name ? 1 : 0
|
|
227
|
+
);
|
|
228
|
+
}
|
|
229
|
+
return config;
|
|
230
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
|
|
3
|
-
import type { HashSource, NormalizedOptions } from '../Fingerprint.types';
|
|
4
3
|
import { getFileBasedHashSourceAsync } from './Utils';
|
|
4
|
+
import type { HashSource, NormalizedOptions } from '../Fingerprint.types';
|
|
5
5
|
|
|
6
6
|
const debug = require('debug')('expo:fingerprint:sourcer:PatchPackage');
|
|
7
7
|
|
package/src/sourcer/Sourcer.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
|
|
3
|
-
import type { HashSource, NormalizedOptions } from '../Fingerprint.types';
|
|
4
|
-
import { profile } from '../utils/Profile';
|
|
5
3
|
import {
|
|
6
4
|
getBareAndroidSourcesAsync,
|
|
7
5
|
getBareIosSourcesAsync,
|
|
@@ -16,6 +14,8 @@ import {
|
|
|
16
14
|
getExpoConfigSourcesAsync,
|
|
17
15
|
} from './Expo';
|
|
18
16
|
import { getPatchPackageSourcesAsync } from './PatchPackage';
|
|
17
|
+
import type { HashSource, NormalizedOptions } from '../Fingerprint.types';
|
|
18
|
+
import { profile } from '../utils/Profile';
|
|
19
19
|
|
|
20
20
|
const debug = require('debug')('expo:fingerprint:sourcer:Sourcer');
|
|
21
21
|
|
|
@@ -47,13 +47,36 @@ describe(getRncliAutolinkingSourcesAsync, () => {
|
|
|
47
47
|
signal: null,
|
|
48
48
|
output: [fixture, ''],
|
|
49
49
|
});
|
|
50
|
-
const sources = await getRncliAutolinkingSourcesAsync('/
|
|
50
|
+
const sources = await getRncliAutolinkingSourcesAsync('/root/apps/demo', normalizeOptions());
|
|
51
51
|
expect(sources).toContainEqual(
|
|
52
52
|
expect.objectContaining({
|
|
53
53
|
type: 'dir',
|
|
54
|
-
filePath: 'node_modules/react-native-reanimated',
|
|
54
|
+
filePath: '../../node_modules/react-native-reanimated',
|
|
55
55
|
})
|
|
56
56
|
);
|
|
57
57
|
expect(sources).toMatchSnapshot();
|
|
58
58
|
});
|
|
59
|
+
|
|
60
|
+
it('should not contain absolute paths', async () => {
|
|
61
|
+
const mockSpawnAsync = spawnAsync as jest.MockedFunction<typeof spawnAsync>;
|
|
62
|
+
const fixture = fs.readFileSync(
|
|
63
|
+
path.join(__dirname, 'fixtures', 'RncliAutoLinking.json'),
|
|
64
|
+
'utf8'
|
|
65
|
+
);
|
|
66
|
+
mockSpawnAsync.mockResolvedValue({
|
|
67
|
+
stdout: fixture,
|
|
68
|
+
stderr: '',
|
|
69
|
+
status: 0,
|
|
70
|
+
signal: null,
|
|
71
|
+
output: [fixture, ''],
|
|
72
|
+
});
|
|
73
|
+
const sources = await getRncliAutolinkingSourcesAsync('/root/apps/demo', normalizeOptions());
|
|
74
|
+
for (const source of sources) {
|
|
75
|
+
if (source.type === 'dir' || source.type === 'file') {
|
|
76
|
+
expect(source.filePath).not.toMatch(/^\/root/);
|
|
77
|
+
} else {
|
|
78
|
+
expect(source.contents).not.toMatch(/"\/root\//);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
});
|
|
59
82
|
});
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
getExpoAutolinkingAndroidSourcesAsync,
|
|
12
12
|
getExpoAutolinkingIosSourcesAsync,
|
|
13
13
|
getExpoConfigSourcesAsync,
|
|
14
|
+
sortExpoAutolinkingAndroidConfig,
|
|
14
15
|
} from '../Expo';
|
|
15
16
|
|
|
16
17
|
jest.mock('@expo/spawn-async');
|
|
@@ -276,3 +277,50 @@ export default ({ config }) => {
|
|
|
276
277
|
expect(sources).toEqual(sources2);
|
|
277
278
|
});
|
|
278
279
|
});
|
|
280
|
+
|
|
281
|
+
describe('sortExpoAutolinkingConfig', () => {
|
|
282
|
+
it('should sort autolinking projects by name', () => {
|
|
283
|
+
const config = {
|
|
284
|
+
extraDependencies: { androidMavenRepos: [], iosPods: {} },
|
|
285
|
+
modules: [
|
|
286
|
+
{
|
|
287
|
+
packageName: 'expo',
|
|
288
|
+
packageVersion: '49.0.5',
|
|
289
|
+
projects: [
|
|
290
|
+
{
|
|
291
|
+
name: 'expo',
|
|
292
|
+
sourceDir: '/app/node_modules/expo/android',
|
|
293
|
+
},
|
|
294
|
+
],
|
|
295
|
+
modules: [],
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
packageName: 'expo-modules-core',
|
|
299
|
+
packageVersion: '1.5.8',
|
|
300
|
+
projects: [
|
|
301
|
+
{
|
|
302
|
+
name: 'expo-modules-core$android-annotation',
|
|
303
|
+
sourceDir: '/app/node_modules/expo-modules-core/android-annotation',
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
name: 'expo-modules-core',
|
|
307
|
+
sourceDir: '/app/node_modules/expo-modules-core/android',
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
name: 'expo-modules-core$android-annotation-processor',
|
|
311
|
+
sourceDir: '/app/node_modules/expo-modules-core/android-annotation-processor',
|
|
312
|
+
},
|
|
313
|
+
],
|
|
314
|
+
modules: [],
|
|
315
|
+
},
|
|
316
|
+
],
|
|
317
|
+
};
|
|
318
|
+
|
|
319
|
+
const result = sortExpoAutolinkingAndroidConfig(config);
|
|
320
|
+
expect(result.modules[1].projects[0].name).toBe('expo-modules-core');
|
|
321
|
+
expect(result.modules[1].projects[1].name).toBe('expo-modules-core$android-annotation');
|
|
322
|
+
expect(result.modules[1].projects[2].name).toBe(
|
|
323
|
+
'expo-modules-core$android-annotation-processor'
|
|
324
|
+
);
|
|
325
|
+
});
|
|
326
|
+
});
|
|
@@ -3,23 +3,15 @@
|
|
|
3
3
|
exports[`getRncliAutolinkingSourcesAsync should contain rn-cli autolinking projects 1`] = `
|
|
4
4
|
[
|
|
5
5
|
{
|
|
6
|
-
"filePath": "node_modules/react-native-reanimated",
|
|
6
|
+
"filePath": "../../node_modules/react-native-reanimated",
|
|
7
7
|
"reasons": [
|
|
8
8
|
"bareRncliAutolinking",
|
|
9
9
|
],
|
|
10
10
|
"type": "dir",
|
|
11
11
|
},
|
|
12
12
|
{
|
|
13
|
-
"contents": "{"sourceDir":"node_modules/react-native-reanimated/android","packageImportPath":"import com.swmansion.reanimated.ReanimatedPackage;","packageInstance":"new ReanimatedPackage()","buildTypes":[],"componentDescriptors":[],"androidMkPath":"node_modules/react-native-reanimated/android/build/generated/source/codegen/jni/Android.mk","cmakeListsPath":"node_modules/react-native-reanimated/android/build/generated/source/codegen/jni/CMakeLists.txt"}",
|
|
14
|
-
"id": "rncliAutolinkingConfig
|
|
15
|
-
"reasons": [
|
|
16
|
-
"bareRncliAutolinking",
|
|
17
|
-
],
|
|
18
|
-
"type": "contents",
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"contents": "{"podspecPath":"node_modules/react-native-reanimated/RNReanimated.podspec","configurations":[],"scriptPhases":[]}",
|
|
22
|
-
"id": "rncliAutolinkingConfig:react-native-reanimated:ios",
|
|
13
|
+
"contents": "{"react-native-reanimated":{"root":"../../node_modules/react-native-reanimated","name":"react-native-reanimated","platforms":{"ios":{"podspecPath":"../../node_modules/react-native-reanimated/RNReanimated.podspec","configurations":[],"scriptPhases":[]},"android":{"sourceDir":"../../node_modules/react-native-reanimated/android","packageImportPath":"import com.swmansion.reanimated.ReanimatedPackage;","packageInstance":"new ReanimatedPackage()","buildTypes":[],"componentDescriptors":[],"androidMkPath":"../../node_modules/react-native-reanimated/android/build/generated/source/codegen/jni/Android.mk","cmakeListsPath":"../../node_modules/react-native-reanimated/android/build/generated/source/codegen/jni/CMakeLists.txt"}}}}",
|
|
14
|
+
"id": "rncliAutolinkingConfig",
|
|
23
15
|
"reasons": [
|
|
24
16
|
"bareRncliAutolinking",
|
|
25
17
|
],
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
{
|
|
2
|
-
"root": "/
|
|
3
|
-
"reactNativePath": "/
|
|
2
|
+
"root": "/root/apps/demo",
|
|
3
|
+
"reactNativePath": "/root/node_modules/react-native",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"react-native-reanimated": {
|
|
6
|
-
"root": "/
|
|
6
|
+
"root": "/root/node_modules/react-native-reanimated",
|
|
7
7
|
"name": "react-native-reanimated",
|
|
8
8
|
"platforms": {
|
|
9
9
|
"ios": {
|
|
10
|
-
"podspecPath": "/
|
|
10
|
+
"podspecPath": "/root/node_modules/react-native-reanimated/RNReanimated.podspec",
|
|
11
11
|
"configurations": [],
|
|
12
12
|
"scriptPhases": []
|
|
13
13
|
},
|
|
14
14
|
"android": {
|
|
15
|
-
"sourceDir": "/
|
|
15
|
+
"sourceDir": "/root/node_modules/react-native-reanimated/android",
|
|
16
16
|
"packageImportPath": "import com.swmansion.reanimated.ReanimatedPackage;",
|
|
17
17
|
"packageInstance": "new ReanimatedPackage()",
|
|
18
18
|
"buildTypes": [],
|
|
19
19
|
"componentDescriptors": [],
|
|
20
|
-
"androidMkPath": "/
|
|
21
|
-
"cmakeListsPath": "/
|
|
20
|
+
"androidMkPath": "/root/node_modules/react-native-reanimated/android/build/generated/source/codegen/jni/Android.mk",
|
|
21
|
+
"cmakeListsPath": "/root/node_modules/react-native-reanimated/android/build/generated/source/codegen/jni/CMakeLists.txt"
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -150,14 +150,14 @@
|
|
|
150
150
|
},
|
|
151
151
|
"project": {
|
|
152
152
|
"ios": {
|
|
153
|
-
"sourceDir": "/
|
|
153
|
+
"sourceDir": "/root/apps/demo/ios",
|
|
154
154
|
"xcodeProject": {
|
|
155
155
|
"name": "RN070.xcworkspace",
|
|
156
156
|
"isWorkspace": true
|
|
157
157
|
}
|
|
158
158
|
},
|
|
159
159
|
"android": {
|
|
160
|
-
"sourceDir": "/
|
|
160
|
+
"sourceDir": "/root/apps/demo/android",
|
|
161
161
|
"appName": "app",
|
|
162
162
|
"packageName": "com.rn070"
|
|
163
163
|
}
|