@expo/fingerprint 0.1.0 → 0.3.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +70 -0
  3. package/__mocks__/@expo/spawn-async.ts +30 -0
  4. package/__mocks__/fs/promises.ts +15 -0
  5. package/build/Fingerprint.js +1 -1
  6. package/build/Fingerprint.js.map +1 -1
  7. package/build/Fingerprint.types.d.ts +12 -1
  8. package/build/Fingerprint.types.js.map +1 -1
  9. package/build/Options.d.ts +3 -1
  10. package/build/Options.js +63 -9
  11. package/build/Options.js.map +1 -1
  12. package/build/hash/Hash.d.ts +1 -1
  13. package/build/hash/Hash.js +15 -18
  14. package/build/hash/Hash.js.map +1 -1
  15. package/build/sourcer/Expo.js +42 -44
  16. package/build/sourcer/Expo.js.map +1 -1
  17. package/build/sourcer/ExpoConfigLoader.d.ts +7 -0
  18. package/build/sourcer/ExpoConfigLoader.js +80 -0
  19. package/build/sourcer/ExpoConfigLoader.js.map +1 -0
  20. package/build/sourcer/Utils.d.ts +4 -0
  21. package/build/sourcer/Utils.js +38 -1
  22. package/build/sourcer/Utils.js.map +1 -1
  23. package/build/utils/Path.d.ts +5 -0
  24. package/build/utils/Path.js +26 -0
  25. package/build/utils/Path.js.map +1 -0
  26. package/e2e/__tests__/__snapshots__/managed-test.ts.snap +3 -2
  27. package/e2e/__tests__/bare-test.ts +7 -0
  28. package/e2e/__tests__/managed-test.ts +13 -3
  29. package/package.json +3 -3
  30. package/src/Fingerprint.ts +2 -2
  31. package/src/Fingerprint.types.ts +13 -1
  32. package/src/Options.ts +70 -7
  33. package/src/__tests__/Fingerprint-test.ts +43 -17
  34. package/src/hash/Hash.ts +20 -21
  35. package/src/hash/__tests__/Hash-test.ts +62 -16
  36. package/src/sourcer/Expo.ts +48 -55
  37. package/src/sourcer/ExpoConfigLoader.ts +84 -0
  38. package/src/sourcer/Utils.ts +39 -0
  39. package/src/sourcer/__tests__/Bare-test.ts +11 -5
  40. package/src/sourcer/__tests__/Expo-test.ts +88 -109
  41. package/src/sourcer/__tests__/PatchPackage-test.ts +6 -3
  42. package/src/sourcer/__tests__/Sourcer-test.ts +9 -2
  43. package/src/sourcer/__tests__/Utils-test.ts +41 -0
  44. package/src/utils/Path.ts +26 -0
  45. package/src/utils/__tests__/Path-test.ts +36 -0
package/CHANGELOG.md CHANGED
@@ -10,6 +10,26 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 0.3.0 — 2023-09-20
14
+
15
+ ### 🛠 Breaking changes
16
+
17
+ - This version includes fingerprint result breaking changes. ([#24520](https://github.com/expo/expo/pull/24520) by [@kudo](https://github.com/kudo))
18
+
19
+ ### 🎉 New features
20
+
21
+ - Improve fingerprint sourcing scope for local config-plugins. ([#24520](https://github.com/expo/expo/pull/24520) by [@kudo](https://github.com/kudo))
22
+
23
+ ## 0.2.0 — 2023-09-08
24
+
25
+ ### 🛠 Breaking changes
26
+
27
+ - Normalize Expo config and remove `runtimeVersion` from fingerprint. Note that the fingerprint result will be changed from this version. ([#24290](https://github.com/expo/expo/pull/24290) by [@Kudo](https://github.com/kudo))
28
+
29
+ ### 🎉 New features
30
+
31
+ - Added `options.ignorePaths` and **.fingerprintignore** to support. ([#24265](https://github.com/expo/expo/pull/24265) by [@Kudo](https://github.com/kudo))
32
+
13
33
  ## 0.1.0 — 2023-08-29
14
34
 
15
35
  ### 🛠 Breaking changes
package/README.md CHANGED
@@ -116,3 +116,73 @@ console.log(result);
116
116
  ## CLI Usage
117
117
 
118
118
  `npx @expo/fingerprint /path/to/projectRoot`
119
+
120
+ ## Limitations
121
+
122
+ ## Limited support for [config-plugins raw functions](https://docs.expo.dev/config-plugins/plugins-and-mods/#raw-functions)
123
+
124
+ When using config-plugins with raw functions, it's essential to be aware of certain limitations, particularly in the context of fingerprinting. Expo makes its best effort to generate fingerprints for changes made through config-plugins; however, raw functions pose specific challenges. Raw functions are not serializable as fingerprints, which means they cannot be directly used for generating unique hashes.
125
+
126
+ To work around this limitation, Expo employs one of the following strategies to create serializable fingerprints for raw functions:
127
+
128
+ 1. **Using `Function.name`**: Expo utilizes the `Function.name` property if available for named raw functions. This property provides a recognizable name for the function, which can be used as a fingerprint property.
129
+
130
+ 2. **Using `withAnonymous`**: For anonymous raw functions without a `Function.name`, Expo resorts to using 'withAnonymous' as the fingerprint property. This is a generic identifier for anonymous functions.
131
+
132
+ Here's an example to illustrate these concepts:
133
+
134
+ ```javascript
135
+ // In app.config.js
136
+ const { withInfoPlist } = require('expo/config-plugins');
137
+
138
+ const withMyPlugin = (config) => {
139
+ return withInfoPlist(config, (config) => {
140
+ config.modResults.NSLocationWhenInUseUsageDescription = 'Allow $(PRODUCT_NAME) to use your location';
141
+ return config;
142
+ });
143
+ };
144
+
145
+ export default ({ config }) => {
146
+ config.plugins ||= [];
147
+ config.plugins.push(withMyPlugin);
148
+ config.plugins.push((config) => config);
149
+ return config;
150
+ };`
151
+ ```
152
+
153
+ In this example, Expo will use ['withMyPlugin', 'withAnonymous'] as plugin properties for fingerprint hashing.
154
+
155
+ It's important to note that due to this design, if you make changes to the implementation of raw config-plugins functions, such as altering the Info.plist value within 'withMyPlugin', the fingerprint will still generate the same hash value. To ensure unique fingerprints when modifying config-plugins implementations, consider the following options:
156
+
157
+ - **Avoid Anonymous Functions**: Avoid using anonymous raw config-plugins functions. Instead, use named functions whenever possible, and ensure that their names remain consistent as long as the implementation changes.
158
+
159
+ - **Use Local config-plugins**: Alternatively, you can create local config-plugins as separate modules, each with its own export. This approach allows you to specify a different function name when making changes to the config-plugins implementations.
160
+
161
+ Here's an example of using a local config-plugin:
162
+
163
+ ```javascript
164
+ // In ./plugins/withMyPlugin.js
165
+ const { withInfoPlist } = require('expo/config-plugins');
166
+
167
+ const withMyPlugin = (config) => {
168
+ return withInfoPlist(config, (config) => {
169
+ config.modResults.NSLocationWhenInUseUsageDescription =
170
+ 'Allow $(PRODUCT_NAME) to use your location';
171
+ return config;
172
+ });
173
+ };
174
+
175
+ module.exports = withMyPlugin;
176
+ ```
177
+
178
+ ```json
179
+ // in app.json
180
+ {
181
+ "expo": {
182
+ // ...
183
+ "plugins": "./plugins/withMyPlugin"
184
+ }
185
+ }
186
+ ```
187
+
188
+ By following these guidelines, you can effectively manage changes to config-plugins and ensure that fingerprinting remains consistent and reliable.
@@ -0,0 +1,30 @@
1
+ import spawnAsync from '@expo/spawn-async';
2
+ import { getConfig } from 'expo/config';
3
+ import path from 'path';
4
+
5
+ type SpawnAsyncType = typeof spawnAsync;
6
+
7
+ const origSpawnAsync = jest.requireActual('@expo/spawn-async') as SpawnAsyncType;
8
+ const mockSpawnAsync = jest
9
+ .fn()
10
+ .mockImplementation(
11
+ async (
12
+ command: Parameters<SpawnAsyncType>[0],
13
+ args: Parameters<SpawnAsyncType>[1],
14
+ options: Parameters<SpawnAsyncType>[2]
15
+ ) => {
16
+ if (args != null && args.length >= 2 && path.parse(args[0]).name === 'ExpoConfigLoader') {
17
+ // For unit tests, we don't really spawn a process to execute the ExpoConfigLoader because the file system is just a memfs.
18
+ // Rather than that, we just call `getConfig` directly.
19
+ const projectRoot = args[1];
20
+ const config = await getConfig(projectRoot, { skipSDKVersionRequirement: true });
21
+ const stdout = JSON.stringify({ config, loadedModules: [] });
22
+ return {
23
+ stdout,
24
+ };
25
+ }
26
+ return origSpawnAsync(command, args, options);
27
+ }
28
+ ) as SpawnAsyncType;
29
+
30
+ module.exports = mockSpawnAsync;
@@ -1,2 +1,17 @@
1
1
  import { fs } from 'memfs';
2
+ import path from 'path';
3
+
4
+ /**
5
+ * Further mock `fs.promises` to ensure the parent directory exists.
6
+ * We used to call `fs.promises.mkdtemp(path.join(os.tmpdir(), ...))`, so that we don't have to worry about os.tmpdir() exists.
7
+ */
8
+ const origMkdtemp = fs.promises.mkdtemp;
9
+ fs.promises.mkdtemp = (
10
+ prefix: string,
11
+ options?: Parameters<typeof origMkdtemp>[1]
12
+ ): ReturnType<typeof origMkdtemp> => {
13
+ fs.mkdirSync(path.dirname(prefix), { recursive: true });
14
+ return origMkdtemp(prefix, options);
15
+ };
16
+
2
17
  module.exports = fs.promises;
@@ -10,7 +10,7 @@ const Sourcer_1 = require("./sourcer/Sourcer");
10
10
  * Create a fingerprint from project
11
11
  */
12
12
  async function createFingerprintAsync(projectRoot, options) {
13
- const opts = (0, Options_1.normalizeOptions)(options);
13
+ const opts = await (0, Options_1.normalizeOptionsAsync)(projectRoot, options);
14
14
  const sources = await (0, Sourcer_1.getHashSourcesAsync)(projectRoot, opts);
15
15
  const normalizedSources = (0, Sort_1.sortSources)((0, Dedup_1.dedupSources)(sources, projectRoot));
16
16
  const fingerprint = await (0, Hash_1.createFingerprintFromSourcesAsync)(normalizedSources, projectRoot, opts);
@@ -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,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"}
1
+ {"version":3,"file":"Fingerprint.js","sourceRoot":"","sources":["../src/Fingerprint.ts"],"names":[],"mappings":";;;AAAA,mCAAuC;AAEvC,uCAAkD;AAClD,iCAAqC;AACrC,sCAAgE;AAChE,+CAAwD;AAExD;;GAEG;AACI,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,OAAiB;IAEjB,MAAM,IAAI,GAAG,MAAM,IAAA,+BAAqB,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/D,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"}
@@ -33,8 +33,19 @@ export interface Options {
33
33
  /**
34
34
  * Excludes directories from hashing. This supported pattern is as `glob()`.
35
35
  * Default is `['android/build', 'android/app/build', 'android/app/.cxx', 'ios/Pods']`.
36
+ * @deprecated Use `ignorePaths` instead.
36
37
  */
37
38
  dirExcludes?: string[];
39
+ /**
40
+ * Ignore files and directories from hashing. This supported pattern is as `glob()`.
41
+ *
42
+ * Please note that the pattern matching is slightly different from gitignore. For example, we don't support partial matching where `build` does not match `android/build`. You should use `'**' + '/build'` instead.
43
+ * @see [minimatch implementations](https://github.com/isaacs/minimatch#comparisons-to-other-fnmatchglob-implementations) for more reference.
44
+ *
45
+ * Besides this `ignorePaths`, fingerprint comes with implicit default ignorePaths defined in `Options.DEFAULT_IGNORE_PATHS`.
46
+ * If you want to override the default ignorePaths, use `!` prefix.
47
+ */
48
+ ignorePaths?: string[];
38
49
  /**
39
50
  * Additional sources for hashing.
40
51
  */
@@ -44,7 +55,7 @@ export interface NormalizedOptions extends Options {
44
55
  platforms: NonNullable<Options['platforms']>;
45
56
  concurrentIoLimit: NonNullable<Options['concurrentIoLimit']>;
46
57
  hashAlgorithm: NonNullable<Options['hashAlgorithm']>;
47
- dirExcludes: NonNullable<Options['dirExcludes']>;
58
+ ignorePaths: NonNullable<Options['ignorePaths']>;
48
59
  }
49
60
  export interface HashSourceFile {
50
61
  type: 'file';
@@ -1 +1 @@
1
- {"version":3,"file":"Fingerprint.types.js","sourceRoot":"","sources":["../src/Fingerprint.types.ts"],"names":[],"mappings":";;AAiGA,YAAY"}
1
+ {"version":3,"file":"Fingerprint.types.js","sourceRoot":"","sources":["../src/Fingerprint.types.ts"],"names":[],"mappings":";;AA6GA,YAAY"}
@@ -1,2 +1,4 @@
1
1
  import type { NormalizedOptions, Options } from './Fingerprint.types';
2
- export declare function normalizeOptions(options?: Options): NormalizedOptions;
2
+ export declare const FINGERPRINT_IGNORE_FILENAME = ".fingerprintignore";
3
+ export declare const DEFAULT_IGNORE_PATHS: string[];
4
+ export declare function normalizeOptionsAsync(projectRoot: string, options?: Options): Promise<NormalizedOptions>;
package/build/Options.js CHANGED
@@ -3,21 +3,75 @@ 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.normalizeOptions = void 0;
6
+ exports.normalizeOptionsAsync = exports.DEFAULT_IGNORE_PATHS = exports.FINGERPRINT_IGNORE_FILENAME = void 0;
7
+ const promises_1 = __importDefault(require("fs/promises"));
7
8
  const os_1 = __importDefault(require("os"));
8
- function normalizeOptions(options) {
9
+ const path_1 = __importDefault(require("path"));
10
+ exports.FINGERPRINT_IGNORE_FILENAME = '.fingerprintignore';
11
+ exports.DEFAULT_IGNORE_PATHS = [
12
+ exports.FINGERPRINT_IGNORE_FILENAME,
13
+ '**/android/build/**/*',
14
+ '**/android/app/build/**/*',
15
+ '**/android/app/.cxx/**/*',
16
+ '**/ios/Pods/**/*',
17
+ // Ignore all expo configs because we will read expo config in a HashSourceContents already
18
+ 'app.config.ts',
19
+ 'app.config.js',
20
+ 'app.config.json',
21
+ 'app.json',
22
+ // Ignore default javascript files when calling `getConfig()`
23
+ '**/node_modules/@babel/**/*',
24
+ '**/node_modules/@expo/**/*',
25
+ '**/node_modules/@jridgewell/**/*',
26
+ '**/node_modules/expo/config.js',
27
+ '**/node_modules/expo/config-plugins.js',
28
+ `**/node_modules/{${[
29
+ 'debug',
30
+ 'escape-string-regexp',
31
+ 'getenv',
32
+ 'graceful-fs',
33
+ 'has-flag',
34
+ 'imurmurhash',
35
+ 'js-tokens',
36
+ 'json5',
37
+ 'lines-and-columns',
38
+ 'require-from-string',
39
+ 'resolve-from',
40
+ 'signal-exit',
41
+ 'sucrase',
42
+ 'supports-color',
43
+ 'ts-interface-checker',
44
+ 'write-file-atomic',
45
+ ].join(',')}}/**/*`,
46
+ ];
47
+ async function normalizeOptionsAsync(projectRoot, options) {
9
48
  return {
10
49
  ...options,
11
50
  platforms: options?.platforms ?? ['android', 'ios'],
12
51
  concurrentIoLimit: options?.concurrentIoLimit ?? os_1.default.cpus().length,
13
52
  hashAlgorithm: options?.hashAlgorithm ?? 'sha1',
14
- dirExcludes: options?.dirExcludes ?? [
15
- '**/android/build',
16
- '**/android/app/build',
17
- '**/android/app/.cxx',
18
- 'ios/Pods',
19
- ],
53
+ ignorePaths: await collectIgnorePathsAsync(projectRoot, options),
20
54
  };
21
55
  }
22
- exports.normalizeOptions = normalizeOptions;
56
+ exports.normalizeOptionsAsync = normalizeOptionsAsync;
57
+ async function collectIgnorePathsAsync(projectRoot, options) {
58
+ const ignorePaths = [
59
+ ...exports.DEFAULT_IGNORE_PATHS,
60
+ ...(options?.ignorePaths ?? []),
61
+ ...(options?.dirExcludes?.map((dirExclude) => `${dirExclude}/**/*`) ?? []),
62
+ ];
63
+ const fingerprintIgnorePath = path_1.default.join(projectRoot, exports.FINGERPRINT_IGNORE_FILENAME);
64
+ try {
65
+ const fingerprintIgnore = await promises_1.default.readFile(fingerprintIgnorePath, 'utf8');
66
+ const fingerprintIgnoreLines = fingerprintIgnore.split('\n');
67
+ for (const line of fingerprintIgnoreLines) {
68
+ const trimmedLine = line.trim();
69
+ if (trimmedLine) {
70
+ ignorePaths.push(trimmedLine);
71
+ }
72
+ }
73
+ }
74
+ catch { }
75
+ return ignorePaths;
76
+ }
23
77
  //# sourceMappingURL=Options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Options.js","sourceRoot":"","sources":["../src/Options.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AAIpB,SAAgB,gBAAgB,CAAC,OAAiB;IAChD,OAAO;QACL,GAAG,OAAO;QACV,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;QACnD,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,IAAI,YAAE,CAAC,IAAI,EAAE,CAAC,MAAM;QACjE,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,MAAM;QAC/C,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI;YACnC,kBAAkB;YAClB,sBAAsB;YACtB,qBAAqB;YACrB,UAAU;SACX;KACF,CAAC;AACJ,CAAC;AAbD,4CAaC"}
1
+ {"version":3,"file":"Options.js","sourceRoot":"","sources":["../src/Options.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA6B;AAC7B,4CAAoB;AACpB,gDAAwB;AAIX,QAAA,2BAA2B,GAAG,oBAAoB,CAAC;AAEnD,QAAA,oBAAoB,GAAG;IAClC,mCAA2B;IAC3B,uBAAuB;IACvB,2BAA2B;IAC3B,0BAA0B;IAC1B,kBAAkB;IAElB,2FAA2F;IAC3F,eAAe;IACf,eAAe;IACf,iBAAiB;IACjB,UAAU;IAEV,6DAA6D;IAC7D,6BAA6B;IAC7B,4BAA4B;IAC5B,kCAAkC;IAClC,gCAAgC;IAChC,wCAAwC;IACxC,oBAAoB;QAClB,OAAO;QACP,sBAAsB;QACtB,QAAQ;QACR,aAAa;QACb,UAAU;QACV,aAAa;QACb,WAAW;QACX,OAAO;QACP,mBAAmB;QACnB,qBAAqB;QACrB,cAAc;QACd,aAAa;QACb,SAAS;QACT,gBAAgB;QAChB,sBAAsB;QACtB,mBAAmB;KACpB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ;CACpB,CAAC;AAEK,KAAK,UAAU,qBAAqB,CACzC,WAAmB,EACnB,OAAiB;IAEjB,OAAO;QACL,GAAG,OAAO;QACV,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;QACnD,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,IAAI,YAAE,CAAC,IAAI,EAAE,CAAC,MAAM;QACjE,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,MAAM;QAC/C,WAAW,EAAE,MAAM,uBAAuB,CAAC,WAAW,EAAE,OAAO,CAAC;KACjE,CAAC;AACJ,CAAC;AAXD,sDAWC;AAED,KAAK,UAAU,uBAAuB,CAAC,WAAmB,EAAE,OAAiB;IAC3E,MAAM,WAAW,GAAG;QAClB,GAAG,4BAAoB;QACvB,GAAG,CAAC,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC;QAC/B,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,UAAU,OAAO,CAAC,IAAI,EAAE,CAAC;KAC3E,CAAC;IAEF,MAAM,qBAAqB,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,mCAA2B,CAAC,CAAC;IAClF,IAAI;QACF,MAAM,iBAAiB,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QAC3E,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7D,KAAK,MAAM,IAAI,IAAI,sBAAsB,EAAE;YACzC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,WAAW,EAAE;gBACf,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAC/B;SACF;KACF;IAAC,MAAM,GAAE;IAEV,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -12,7 +12,7 @@ export declare function createFingerprintSourceAsync(source: HashSource, limiter
12
12
  /**
13
13
  * Create a `HashResult` from a file
14
14
  */
15
- export declare function createFileHashResultsAsync(filePath: string, limiter: pLimit.Limit, projectRoot: string, options: NormalizedOptions): Promise<HashResult>;
15
+ export declare function createFileHashResultsAsync(filePath: string, limiter: pLimit.Limit, projectRoot: string, options: NormalizedOptions): Promise<HashResult | null>;
16
16
  /**
17
17
  * Create `HashResult` for a dir.
18
18
  * If the dir is excluded, returns null rather than a HashResult
@@ -7,9 +7,9 @@ exports.createSourceId = exports.createContentsHashResultsAsync = exports.create
7
7
  const crypto_1 = require("crypto");
8
8
  const fs_1 = require("fs");
9
9
  const promises_1 = __importDefault(require("fs/promises"));
10
- const minimatch_1 = __importDefault(require("minimatch"));
11
10
  const p_limit_1 = __importDefault(require("p-limit"));
12
11
  const path_1 = __importDefault(require("path"));
12
+ const Path_1 = require("../utils/Path");
13
13
  const Profile_1 = require("../utils/Profile");
14
14
  /**
15
15
  * Create a `Fingerprint` from `HashSources` array
@@ -60,6 +60,10 @@ async function createFileHashResultsAsync(filePath, limiter, projectRoot, option
60
60
  // Backup code for faster hashing
61
61
  /*
62
62
  return limiter(async () => {
63
+ if (isIgnoredPath(filePath, options.ignorePaths)) {
64
+ return null;
65
+ }
66
+
63
67
  const hasher = createHash(options.hashAlgorithm);
64
68
 
65
69
  const stat = await fs.stat(filePath);
@@ -76,6 +80,9 @@ async function createFileHashResultsAsync(filePath, limiter, projectRoot, option
76
80
  */
77
81
  return limiter(() => {
78
82
  return new Promise((resolve, reject) => {
83
+ if ((0, Path_1.isIgnoredPath)(filePath, options.ignorePaths)) {
84
+ return resolve(null);
85
+ }
79
86
  let resolved = false;
80
87
  const hasher = (0, crypto_1.createHash)(options.hashAlgorithm);
81
88
  const stream = (0, fs_1.createReadStream)(path_1.default.join(projectRoot, filePath));
@@ -96,23 +103,12 @@ async function createFileHashResultsAsync(filePath, limiter, projectRoot, option
96
103
  });
97
104
  }
98
105
  exports.createFileHashResultsAsync = createFileHashResultsAsync;
99
- /**
100
- * Indicate the given `dirPath` should be excluded by `dirExcludes`
101
- */
102
- function isExcludedDir(dirPath, dirExcludes) {
103
- for (const exclude of dirExcludes) {
104
- if ((0, minimatch_1.default)(dirPath, exclude)) {
105
- return true;
106
- }
107
- }
108
- return false;
109
- }
110
106
  /**
111
107
  * Create `HashResult` for a dir.
112
108
  * If the dir is excluded, returns null rather than a HashResult
113
109
  */
114
110
  async function createDirHashResultsAsync(dirPath, limiter, projectRoot, options, depth = 0) {
115
- if (isExcludedDir(dirPath, options.dirExcludes)) {
111
+ if ((0, Path_1.isIgnoredPath)(dirPath, options.ignorePaths)) {
116
112
  return null;
117
113
  }
118
114
  const dirents = (await promises_1.default.readdir(path_1.default.join(projectRoot, dirPath), { withFileTypes: true })).sort((a, b) => a.name.localeCompare(b.name));
@@ -128,12 +124,13 @@ async function createDirHashResultsAsync(dirPath, limiter, projectRoot, options,
128
124
  }
129
125
  }
130
126
  const hasher = (0, crypto_1.createHash)(options.hashAlgorithm);
131
- const results = await Promise.all(promises);
127
+ const results = (await Promise.all(promises)).filter((result) => result != null);
128
+ if (results.length === 0) {
129
+ return null;
130
+ }
132
131
  for (const result of results) {
133
- if (result != null) {
134
- hasher.update(result.id);
135
- hasher.update(result.hex);
136
- }
132
+ hasher.update(result.id);
133
+ hasher.update(result.hex);
137
134
  }
138
135
  const hex = hasher.digest('hex');
139
136
  return { id: dirPath, hex };
@@ -1 +1 @@
1
- {"version":3,"file":"Hash.js","sourceRoot":"","sources":["../../src/hash/Hash.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Hash.js","sourceRoot":"","sources":["../../src/hash/Hash.ts"],"names":[],"mappings":"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"}
@@ -5,34 +5,40 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
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
- const assert_1 = __importDefault(require("assert"));
9
8
  const chalk_1 = __importDefault(require("chalk"));
10
- const find_up_1 = __importDefault(require("find-up"));
9
+ const promises_1 = __importDefault(require("fs/promises"));
10
+ const os_1 = __importDefault(require("os"));
11
11
  const path_1 = __importDefault(require("path"));
12
12
  const resolve_from_1 = __importDefault(require("resolve-from"));
13
+ const ExpoConfigLoader_1 = require("./ExpoConfigLoader");
13
14
  const Utils_1 = require("./Utils");
14
15
  const debug = require('debug')('expo:fingerprint:sourcer:Expo');
15
16
  async function getExpoConfigSourcesAsync(projectRoot, options) {
17
+ if (!resolve_from_1.default.silent(path_1.default.resolve(projectRoot), 'expo/config')) {
18
+ return [];
19
+ }
20
+ const results = [];
16
21
  let config;
22
+ let loadedModules = [];
23
+ const ignoredFile = await createTempIgnoredFileAsync(options);
17
24
  try {
18
- const { getConfig } = require((0, resolve_from_1.default)(path_1.default.resolve(projectRoot), 'expo/config'));
19
- config = await getConfig(projectRoot, { skipSDKVersionRequirement: true });
25
+ const { stdout } = await (0, spawn_async_1.default)('node', [(0, ExpoConfigLoader_1.getExpoConfigLoaderPath)(), path_1.default.resolve(projectRoot), ignoredFile], { cwd: __dirname });
26
+ const stdoutJson = JSON.parse(stdout);
27
+ config = stdoutJson.config;
28
+ loadedModules = stdoutJson.loadedModules;
29
+ results.push({
30
+ type: 'contents',
31
+ id: 'expoConfig',
32
+ contents: normalizeExpoConfig(config.exp),
33
+ reasons: ['expoConfig'],
34
+ });
20
35
  }
21
36
  catch (e) {
22
- debug('Cannot get Expo config: ' + e);
37
+ if (e instanceof Error) {
38
+ console.warn(`Cannot get Expo config from an Expo project - ${e.message}: `, e.stack);
39
+ }
23
40
  return [];
24
41
  }
25
- const results = [];
26
- // app config files
27
- const configFiles = ['app.config.ts', 'app.config.js', 'app.config.json', 'app.json'];
28
- const configFileSources = (await Promise.all(configFiles.map(async (file) => {
29
- const result = await (0, Utils_1.getFileBasedHashSourceAsync)(projectRoot, file, 'expoConfig');
30
- if (result != null) {
31
- debug(`Adding config file - ${chalk_1.default.dim(file)}`);
32
- }
33
- return result;
34
- }))).filter(Boolean);
35
- results.push(...configFileSources);
36
42
  // external files in config
37
43
  const isAndroid = options.platforms.includes('android');
38
44
  const isIos = options.platforms.includes('ios');
@@ -67,38 +73,30 @@ async function getExpoConfigSourcesAsync(projectRoot, options) {
67
73
  }))).filter(Boolean);
68
74
  results.push(...externalFileSources);
69
75
  // config plugins
70
- const configPluginSources = getConfigPluginSourcesAsync(projectRoot, config.exp.plugins);
71
- results.push(...configPluginSources);
76
+ const configPluginModules = loadedModules.map((modulePath) => ({
77
+ type: 'file',
78
+ filePath: modulePath,
79
+ reasons: ['expoConfigPlugins'],
80
+ }));
81
+ results.push(...configPluginModules);
72
82
  return results;
73
83
  }
74
84
  exports.getExpoConfigSourcesAsync = getExpoConfigSourcesAsync;
75
- function findUpPluginRoot(entryFile) {
76
- const entryRoot = path_1.default.dirname(entryFile);
77
- const packageJson = find_up_1.default.sync('package.json', { cwd: path_1.default.dirname(entryFile) });
78
- (0, assert_1.default)(packageJson, `No package.json found for module "${entryRoot}"`);
79
- return path_1.default.dirname(packageJson);
85
+ function normalizeExpoConfig(config) {
86
+ // Deep clone by JSON.parse/stringify that assumes the config is serializable.
87
+ const normalizedConfig = JSON.parse(JSON.stringify(config));
88
+ delete normalizedConfig.runtimeVersion;
89
+ delete normalizedConfig._internal;
90
+ return (0, Utils_1.stringifyJsonSorted)(normalizedConfig);
80
91
  }
81
- function getConfigPluginSourcesAsync(projectRoot, plugins) {
82
- if (plugins == null) {
83
- return [];
84
- }
85
- const reasons = ['expoConfigPlugins'];
86
- const nullableResults = plugins.map((plugin) => {
87
- const pluginPackageName = Array.isArray(plugin) ? plugin[0] : plugin;
88
- if (typeof pluginPackageName === 'string') {
89
- const pluginPackageEntryFile = resolve_from_1.default.silent(projectRoot, pluginPackageName);
90
- const pluginPackageRoot = pluginPackageEntryFile
91
- ? findUpPluginRoot(pluginPackageEntryFile)
92
- : null;
93
- if (pluginPackageRoot) {
94
- debug(`Adding config-plugin root - ${chalk_1.default.dim(pluginPackageRoot)}`);
95
- return { type: 'dir', filePath: path_1.default.relative(projectRoot, pluginPackageRoot), reasons };
96
- }
97
- }
98
- return null;
99
- });
100
- const results = nullableResults.filter(Boolean);
101
- return results;
92
+ /**
93
+ * Create a temporary file with ignored paths from options that will be read by the ExpoConfigLoader.
94
+ */
95
+ async function createTempIgnoredFileAsync(options) {
96
+ await promises_1.default.mkdtemp(path_1.default.join(os_1.default.tmpdir(), 'expo-fingerprint-'));
97
+ const ignoredFile = path_1.default.join(os_1.default.tmpdir(), '.fingerprintignore');
98
+ await promises_1.default.writeFile(ignoredFile, options.ignorePaths.join('\n'));
99
+ return ignoredFile;
102
100
  }
103
101
  async function getEasBuildSourcesAsync(projectRoot, options) {
104
102
  const files = ['eas.json', '.easignore'];
@@ -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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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * A helper script to load the Expo config and loaded plugins from a project
3
+ */
4
+ /**
5
+ * Get the path to the ExpoConfigLoader file.
6
+ */
7
+ export declare function getExpoConfigLoaderPath(): string;