@expo/fingerprint 0.21.6 → 0.21.7

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.
@@ -12,7 +12,9 @@ export declare function getExpoConfigAsync(projectRoot: string, options: Normali
12
12
  * Keep only the config-plugin modules attributable to applying plugins.
13
13
  *
14
14
  * Anything that also loads when plugins are skipped is the config-loading framework and is dropped.
15
- * In-repo files are always kept regardless of the diff, so a local plugin imported at the top of
16
- * `app.config` (which loads during config evaluation, not plugin application) is never lost.
15
+ * In-repo files and files of linked dependencies are always kept regardless of the diff, so a local
16
+ * or workspace plugin imported at the top of `app.config` (which loads during config evaluation,
17
+ * not plugin application) is never lost. `isLinkedDependencyFile` runs only for a file the diff
18
+ * would drop.
17
19
  */
18
- export declare function diffLoadedModules(withPlugins: LoadedModuleSource[], withoutPlugins: LoadedModuleSource[]): LoadedModuleSource[];
20
+ export declare function diffLoadedModules(withPlugins: LoadedModuleSource[], withoutPlugins: LoadedModuleSource[], isLinkedDependencyFile?: (relativePosixPath: string) => boolean): LoadedModuleSource[];
@@ -56,6 +56,7 @@ function _resolvefrom() {
56
56
  return data;
57
57
  }
58
58
  const _ExpoConfigLoader = require("./ExpoConfigLoader");
59
+ const _LinkedDependencies = require("./utils/LinkedDependencies");
59
60
  const _SpawnIPC = require("./utils/SpawnIPC");
60
61
  function _interop_require_default(obj) {
61
62
  return obj && obj.__esModule ? obj : {
@@ -79,7 +80,7 @@ async function getExpoConfigAsync(projectRoot, options) {
79
80
  spawnConfigLoaderAsync(projectRoot, ignoredFile, /* skipPlugins */ true)
80
81
  ]);
81
82
  result.config = config;
82
- result.loadedModules = diffLoadedModules(modulesWithPlugins ?? [], modulesWithoutPlugins ?? []);
83
+ result.loadedModules = diffLoadedModules(modulesWithPlugins ?? [], modulesWithoutPlugins ?? [], (0, _LinkedDependencies.createLinkedDependencyMatcher)(_path().default.resolve(projectRoot)));
83
84
  } catch (e) {
84
85
  if (e instanceof Error) {
85
86
  console.warn(`Cannot get Expo config from an Expo project - ${e.message}: `, e.stack);
@@ -114,9 +115,12 @@ async function spawnConfigLoaderAsync(projectRoot, ignoredFile, skipPlugins) {
114
115
  });
115
116
  return JSON.parse(message);
116
117
  }
117
- function diffLoadedModules(withPlugins, withoutPlugins) {
118
+ function diffLoadedModules(withPlugins, withoutPlugins, isLinkedDependencyFile = ()=>false) {
118
119
  const skippedKeys = new Set(withoutPlugins.map(getLoadedModuleKey));
119
- return withPlugins.filter((source)=>isInRepoLoadedModule(source) || !skippedKeys.has(getLoadedModuleKey(source)));
120
+ return withPlugins.filter((source)=>{
121
+ const key = getLoadedModuleKey(source);
122
+ return isInRepoLoadedModule(source) || !skippedKeys.has(key) || source.type === 'file' && isLinkedDependencyFile(key);
123
+ });
120
124
  }
121
125
  /** Stable identity of a loaded module: its file path, or its id for a virtual module. */ function getLoadedModuleKey(source) {
122
126
  return source.type === 'file' ? source.path : source.id;
@@ -1 +1 @@
1
- {"version":3,"sources":["ExpoConfig.ts"],"sourcesContent":[null],"names":["diffLoadedModules","getExpoConfigAsync","FINGERPRINT_ENV_MODE","projectRoot","options","result","config","loadedModules","resolveFrom","silent","path","resolve","tmpDir","fs","mkdtemp","join","os","tmpdir","ignoredFile","createTempIgnoredFileAsync","modulesWithPlugins","modulesWithoutPlugins","Promise","all","spawnConfigLoaderAsync","e","Error","console","warn","message","stack","rm","recursive","skipPlugins","args","getExpoConfigLoaderPath","push","childEnv","setNodeEnv","systemEnv","getOriginalEnv","__EXPO_CONFIG_MODE","spawnWithIpcAsync","cwd","env","JSON","parse","withPlugins","withoutPlugins","skippedKeys","Set","map","getLoadedModuleKey","filter","source","isInRepoLoadedModule","has","type","id","key","startsWith","includes","ignorePaths","ignorePathMatchObjects","match","pattern","writeFile"],"mappings":"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"}
1
+ {"version":3,"sources":["ExpoConfig.ts"],"sourcesContent":[null],"names":["diffLoadedModules","getExpoConfigAsync","FINGERPRINT_ENV_MODE","projectRoot","options","result","config","loadedModules","resolveFrom","silent","path","resolve","tmpDir","fs","mkdtemp","join","os","tmpdir","ignoredFile","createTempIgnoredFileAsync","modulesWithPlugins","modulesWithoutPlugins","Promise","all","spawnConfigLoaderAsync","createLinkedDependencyMatcher","e","Error","console","warn","message","stack","rm","recursive","skipPlugins","args","getExpoConfigLoaderPath","push","childEnv","setNodeEnv","systemEnv","getOriginalEnv","__EXPO_CONFIG_MODE","spawnWithIpcAsync","cwd","env","JSON","parse","withPlugins","withoutPlugins","isLinkedDependencyFile","skippedKeys","Set","map","getLoadedModuleKey","filter","source","key","isInRepoLoadedModule","has","type","id","startsWith","includes","ignorePaths","ignorePathMatchObjects","match","pattern","writeFile"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Create a test for a file of a dependency that the project declares and that lives outside
3
+ * `node_modules`, such as a linked workspace package in a monorepo. The nearest `package.json`
4
+ * above the file names its package. Lookups are cached per directory.
5
+ */
6
+ export declare function createLinkedDependencyMatcher(projectRoot: string): (relativePosixPath: string) => boolean;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "createLinkedDependencyMatcher", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return createLinkedDependencyMatcher;
9
+ }
10
+ });
11
+ function _fs() {
12
+ const data = /*#__PURE__*/ _interop_require_default(require("fs"));
13
+ _fs = function() {
14
+ return data;
15
+ };
16
+ return data;
17
+ }
18
+ function _path() {
19
+ const data = /*#__PURE__*/ _interop_require_default(require("path"));
20
+ _path = function() {
21
+ return data;
22
+ };
23
+ return data;
24
+ }
25
+ function _interop_require_default(obj) {
26
+ return obj && obj.__esModule ? obj : {
27
+ default: obj
28
+ };
29
+ }
30
+ const DEPENDENCY_FIELDS = [
31
+ 'dependencies',
32
+ 'devDependencies',
33
+ 'peerDependencies',
34
+ 'optionalDependencies'
35
+ ];
36
+ function createLinkedDependencyMatcher(projectRoot) {
37
+ const dependencyNames = new Set(readDependencyNames(projectRoot));
38
+ const packageNameCache = new Map();
39
+ return (relativePosixPath)=>{
40
+ if (dependencyNames.size === 0 || relativePosixPath.split('/').includes('node_modules')) {
41
+ return false;
42
+ }
43
+ const dir = _path().default.dirname(_path().default.resolve(projectRoot, relativePosixPath));
44
+ const packageName = findPackageName(dir, packageNameCache);
45
+ return packageName !== null && dependencyNames.has(packageName);
46
+ };
47
+ }
48
+ function readDependencyNames(projectRoot) {
49
+ let packageJson;
50
+ try {
51
+ packageJson = JSON.parse(_fs().default.readFileSync(_path().default.join(projectRoot, 'package.json'), 'utf8'));
52
+ } catch {
53
+ return [];
54
+ }
55
+ return DEPENDENCY_FIELDS.flatMap((field)=>Object.keys(packageJson[field] ?? {}));
56
+ }
57
+ function findPackageName(dir, cache) {
58
+ const cached = cache.get(dir);
59
+ if (cached !== undefined) {
60
+ return cached;
61
+ }
62
+ let packageName = null;
63
+ try {
64
+ // The sync read is fine: the result is cached per directory and few files reach this point.
65
+ const { name } = JSON.parse(_fs().default.readFileSync(_path().default.join(dir, 'package.json'), 'utf8'));
66
+ packageName = typeof name === 'string' ? name : null;
67
+ } catch {}
68
+ const parentDir = _path().default.dirname(dir);
69
+ if (packageName === null && parentDir !== dir) {
70
+ packageName = findPackageName(parentDir, cache);
71
+ }
72
+ cache.set(dir, packageName);
73
+ return packageName;
74
+ }
75
+
76
+ //# sourceMappingURL=LinkedDependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["utils/LinkedDependencies.ts"],"sourcesContent":[null],"names":["createLinkedDependencyMatcher","DEPENDENCY_FIELDS","projectRoot","dependencyNames","Set","readDependencyNames","packageNameCache","Map","relativePosixPath","size","split","includes","dir","path","dirname","resolve","packageName","findPackageName","has","packageJson","JSON","parse","fs","readFileSync","join","flatMap","field","Object","keys","cache","cached","get","undefined","name","parentDir","set"],"mappings":";;;;+BAegBA;;;eAAAA;;;;gEAfD;;;;;;;gEACE;;;;;;;;;;;AAEjB,MAAMC,oBAAoB;IACxB;IACA;IACA;IACA;CACD;AAOM,SAASD,8BACdE,WAAmB;IAEnB,MAAMC,kBAAkB,IAAIC,IAAIC,oBAAoBH;IACpD,MAAMI,mBAAmB,IAAIC;IAC7B,OAAO,CAACC;QACN,IAAIL,gBAAgBM,IAAI,KAAK,KAAKD,kBAAkBE,KAAK,CAAC,KAAKC,QAAQ,CAAC,iBAAiB;YACvF,OAAO;QACT;QACA,MAAMC,MAAMC,eAAI,CAACC,OAAO,CAACD,eAAI,CAACE,OAAO,CAACb,aAAaM;QACnD,MAAMQ,cAAcC,gBAAgBL,KAAKN;QACzC,OAAOU,gBAAgB,QAAQb,gBAAgBe,GAAG,CAACF;IACrD;AACF;AAEA,SAASX,oBAAoBH,WAAmB;IAC9C,IAAIiB;IACJ,IAAI;QACFA,cAAcC,KAAKC,KAAK,CAACC,aAAE,CAACC,YAAY,CAACV,eAAI,CAACW,IAAI,CAACtB,aAAa,iBAAiB;IACnF,EAAE,OAAM;QACN,OAAO,EAAE;IACX;IACA,OAAOD,kBAAkBwB,OAAO,CAAC,CAACC,QAAUC,OAAOC,IAAI,CAACT,WAAW,CAACO,MAAM,IAAI,CAAC;AACjF;AAEA,SAAST,gBAAgBL,GAAW,EAAEiB,KAAiC;IACrE,MAAMC,SAASD,MAAME,GAAG,CAACnB;IACzB,IAAIkB,WAAWE,WAAW;QACxB,OAAOF;IACT;IACA,IAAId,cAA6B;IACjC,IAAI;QACF,4FAA4F;QAC5F,MAAM,EAAEiB,IAAI,EAAE,GAAGb,KAAKC,KAAK,CAACC,aAAE,CAACC,YAAY,CAACV,eAAI,CAACW,IAAI,CAACZ,KAAK,iBAAiB;QAC5EI,cAAc,OAAOiB,SAAS,WAAWA,OAAO;IAClD,EAAE,OAAM,CAAC;IACT,MAAMC,YAAYrB,eAAI,CAACC,OAAO,CAACF;IAC/B,IAAII,gBAAgB,QAAQkB,cAActB,KAAK;QAC7CI,cAAcC,gBAAgBiB,WAAWL;IAC3C;IACAA,MAAMM,GAAG,CAACvB,KAAKI;IACf,OAAOA;AACT"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/fingerprint",
3
- "version": "0.21.6",
3
+ "version": "0.21.7",
4
4
  "description": "A library to generate a fingerprint from a React Native project",
5
5
  "keywords": [
6
6
  "expo",
@@ -44,7 +44,7 @@
44
44
  "semver": "^7.7.4"
45
45
  },
46
46
  "devDependencies": {
47
- "@expo/config": "~58.0.7",
47
+ "@expo/config": "~58.0.8",
48
48
  "@expo/internal-scripts": "58.0.4",
49
49
  "@expo/require-utils": "~58.0.4",
50
50
  "@types/debug": "^4.1.5",