@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 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))
@@ -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[];
@@ -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
- const result = newFingerprint.sources.filter((newItem) => {
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
@@ -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,MAAM,MAAM,GAAwB,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAC5E,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAC9B,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;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAfD,kEAeC"}
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"}
@@ -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
- for (const depData of Object.values(config.dependencies)) {
75
- const filePath = path_1.default.relative(root, depData.root);
76
- results.push({ type: 'dir', filePath, reasons });
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
- for (const platform of options.platforms) {
79
- const platformData = getRncliPlatformData(depData, root, platform);
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 getRncliPlatformData(dependency, root, platform) {
98
- const platformData = dependency.platforms[platform];
99
- if (!platformData) {
100
- return '';
101
- }
102
- const json = {};
103
- for (const [key, value] of Object.entries(platformData)) {
104
- json[key] = value?.startsWith?.(root) ? path_1.default.relative(root, value) : value;
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":"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"}
1
+ {"version":3,"file":"Bare.js","sourceRoot":"","sources":["../../src/sourcer/Bare.ts"],"names":[],"mappings":"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"}
@@ -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>;
@@ -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":"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"}
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;AAG1B,mCAAsD;AAEtD,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"}
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"}
@@ -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;AAG1B,8CAA2C;AAC3C,iCAMgB;AAChB,iCAKgB;AAChB,iDAA6D;AAE7D,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"}
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:expo:android",
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":[],"androidMkPath":"node_modules/@react-native-community/netinfo/android/build/generated/source/codegen/jni/Android.mk","cmakeListsPath":"node_modules/@react-native-community/netinfo/android/build/generated/source/codegen/jni/CMakeLists.txt"}",
114
- "hash": "cb4dfbb38f9151ecd6621bc9e36055540495c463",
115
- "id": "rncliAutolinkingConfig:@react-native-community/netinfo:android",
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.9",
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
- "jest": "^29.2.1",
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": "cf90d5c30c2a08a6493ebfa8aa3791aa70666759"
51
+ "gitHead": "1f5e9f77f22e5d6a464d34194236684a45fcf322"
62
52
  }
@@ -42,10 +42,19 @@ export async function diffFingerprintChangesAsync(
42
42
  if (fingerprint.hash === newFingerprint.hash) {
43
43
  return [];
44
44
  }
45
- const result: FingerprintSource[] = newFingerprint.sources.filter((newItem) => {
46
- return !fingerprint.sources.find(
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
  }
@@ -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
- for (const depData of Object.values<any>(config.dependencies)) {
84
- const filePath = path.relative(root, depData.root);
85
- results.push({ type: 'dir', filePath, reasons });
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
- for (const platform of options.platforms) {
88
- const platformData = getRncliPlatformData(depData, root, platform);
89
- if (platformData) {
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 getRncliPlatformData(dependency: any, root: string, platform: Platform): string {
106
- const platformData = dependency.platforms[platform];
107
- if (!platformData) {
108
- return '';
109
- }
110
- const json: Record<string, string> = {};
111
- for (const [key, value] of Object.entries<any>(platformData)) {
112
- json[key] = value?.startsWith?.(root) ? path.relative(root, value) : value;
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
  }
@@ -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
 
@@ -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('/app', normalizeOptions());
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:react-native-reanimated:android",
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": "/app",
3
- "reactNativePath": "/app/node_modules/react-native",
2
+ "root": "/root/apps/demo",
3
+ "reactNativePath": "/root/node_modules/react-native",
4
4
  "dependencies": {
5
5
  "react-native-reanimated": {
6
- "root": "/app/node_modules/react-native-reanimated",
6
+ "root": "/root/node_modules/react-native-reanimated",
7
7
  "name": "react-native-reanimated",
8
8
  "platforms": {
9
9
  "ios": {
10
- "podspecPath": "/app/node_modules/react-native-reanimated/RNReanimated.podspec",
10
+ "podspecPath": "/root/node_modules/react-native-reanimated/RNReanimated.podspec",
11
11
  "configurations": [],
12
12
  "scriptPhases": []
13
13
  },
14
14
  "android": {
15
- "sourceDir": "/app/node_modules/react-native-reanimated/android",
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": "/app/node_modules/react-native-reanimated/android/build/generated/source/codegen/jni/Android.mk",
21
- "cmakeListsPath": "/app/node_modules/react-native-reanimated/android/build/generated/source/codegen/jni/CMakeLists.txt"
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": "/app/ios",
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": "/app/android",
160
+ "sourceDir": "/root/apps/demo/android",
161
161
  "appName": "app",
162
162
  "packageName": "com.rn070"
163
163
  }