@expo/require-utils 56.1.1 → 56.1.2

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/build/resolve.js CHANGED
@@ -32,9 +32,11 @@ function resolveFrom(fromDirectory, moduleId, params) {
32
32
  const exts = !isJSON ? params?.extensions ?? Object.keys(_nodeModule().default._extensions) : [];
33
33
  const skipNodePath = !!params?.skipNodePath;
34
34
  const followSymlinks = params?.followSymlinks ?? skipNodePath;
35
- const resolved = _nodePath().default.resolve(fromDirectory, moduleId);
35
+ let resolved = _nodePath().default.resolve(fromDirectory, moduleId);
36
+
36
37
  // (1) check direct path / exact match
37
- if (_nodeFs().default.existsSync(resolved)) {
38
+ const resolveType = resolveTypeSync(resolved);
39
+ if (resolveType === ResolveType.FILE) {
38
40
  return resolved;
39
41
  }
40
42
 
@@ -42,29 +44,67 @@ function resolveFrom(fromDirectory, moduleId, params) {
42
44
  for (let ext of exts) {
43
45
  ext = ext[0] !== '.' ? `.${ext}` : ext;
44
46
  const withExt = resolved + ext;
45
- if (_nodeFs().default.existsSync(withExt)) {
47
+ if (resolveTypeSync(withExt) === ResolveType.FILE) {
46
48
  return withExt;
47
49
  }
48
50
  }
51
+ const isFileSpecifier = /^\.\.?(?:$|[/\\])/.test(moduleId) || _nodePath().default.isAbsolute(moduleId);
52
+
53
+ // (2.2) check against `/index` paths if we've disabled Node resolution or if we're resolving a relative path directly
54
+ if ((isFileSpecifier || skipNodePath) && !isJSON && resolveType === ResolveType.DIR) {
55
+ resolved = _nodePath().default.join(resolved, 'index');
56
+ for (let ext of exts) {
57
+ ext = ext[0] !== '.' ? `.${ext}` : ext;
58
+ const withExt = resolved + ext;
59
+ if (resolveTypeSync(withExt) === ResolveType.FILE) {
60
+ // NOTE(@kitten): Like above, we don't resolve symlinks when we're not in a node_modules resolution path
61
+ return withExt;
62
+ }
63
+ }
64
+ }
65
+
66
+ // We won't need to continue with Node resolution if we're only resolving paths
67
+ if (isFileSpecifier) {
68
+ return null;
69
+ }
49
70
 
50
71
  // (3) if we're not following symlinks, we try to resolve against `node_modules` folders unresolved
51
72
  if (!followSymlinks || skipNodePath) {
52
73
  const resolvedDir = _nodePath().default.resolve(fromDirectory);
53
74
  const moduleDirs = _nodeModule().default._nodeModulePaths(resolvedDir);
54
75
  for (const modulesDir of moduleDirs) {
55
- const candidate = _nodePath().default.join(modulesDir, moduleId);
76
+ let candidate = _nodePath().default.join(modulesDir, moduleId);
77
+ const resolveType = resolveTypeSync(candidate);
56
78
  // (3.1) direct match
57
- if (_nodeFs().default.existsSync(candidate)) {
79
+ if (resolveType === ResolveType.FILE) {
58
80
  return candidate;
81
+ } else if (resolveType === ResolveType.ENOENT) {
82
+ // Optimization: If the directory itself doesn't exist, there's no point in us continuing
83
+ // to check for more files in this directory
84
+ const dirname = _nodePath().default.dirname(candidate);
85
+ if (dirname !== modulesDir && !_nodeFs().default.existsSync(dirname)) {
86
+ continue;
87
+ }
59
88
  }
60
89
  // (3.2) check against match with extensions
61
90
  for (let ext of exts) {
62
91
  ext = ext[0] !== '.' ? `.${ext}` : ext;
63
92
  const candidateWithExt = candidate + ext;
64
- if (_nodeFs().default.existsSync(candidateWithExt)) {
93
+ if (resolveTypeSync(candidateWithExt) === ResolveType.FILE) {
65
94
  return followSymlinks ? maybeResolve(candidateWithExt) : candidateWithExt;
66
95
  }
67
96
  }
97
+ // (3.3) check against `/index` paths
98
+ if (!isJSON && resolveType === ResolveType.DIR) {
99
+ candidate = _nodePath().default.join(candidate, 'index');
100
+ for (let ext of exts) {
101
+ ext = ext[0] !== '.' ? `.${ext}` : ext;
102
+ const candidateWithExt = candidate + ext;
103
+ if (resolveTypeSync(candidateWithExt) === ResolveType.FILE) {
104
+ return followSymlinks ? maybeResolve(candidateWithExt) : candidateWithExt;
105
+ }
106
+ }
107
+ }
68
108
  }
69
109
  }
70
110
 
@@ -84,6 +124,47 @@ function nativeResolveFrom(fromDirectory, moduleId) {
84
124
  return null;
85
125
  }
86
126
  }
127
+ function isRealpathFileSync(target) {
128
+ try {
129
+ const realpath = _nodeFs().default.realpathSync(target);
130
+ return !!_nodeFs().default.lstatSync(realpath, {
131
+ throwIfNoEntry: false
132
+ })?.isFile();
133
+ } catch {
134
+ return false;
135
+ }
136
+ }
137
+ var ResolveType = /*#__PURE__*/function (ResolveType) {
138
+ ResolveType[ResolveType["FILE"] = 1] = "FILE";
139
+ ResolveType[ResolveType["DIR"] = 2] = "DIR";
140
+ ResolveType[ResolveType["ENOENT"] = 0] = "ENOENT";
141
+ return ResolveType;
142
+ }(ResolveType || {});
143
+ function resolveTypeSync(target) {
144
+ try {
145
+ const stat = _nodeFs().default.lstatSync(target, {
146
+ throwIfNoEntry: false
147
+ });
148
+ if (stat) {
149
+ if (stat.isSymbolicLink()) {
150
+ return isRealpathFileSync(target) ? ResolveType.FILE : ResolveType.ENOENT;
151
+ } else if (stat.isFile()) {
152
+ return ResolveType.FILE;
153
+ } else if (stat.isDirectory()) {
154
+ // NOTE(@kitten): We don't support symlinked directories for resolution
155
+ // Realistically, when we disable Node resolution, symlinked directory resolution
156
+ // for `/index` is rare, and can be used to exploit symlinks
157
+ return ResolveType.DIR;
158
+ } else {
159
+ return ResolveType.ENOENT;
160
+ }
161
+ } else {
162
+ return ResolveType.ENOENT;
163
+ }
164
+ } catch {
165
+ return ResolveType.ENOENT;
166
+ }
167
+ }
87
168
  function maybeResolve(target) {
88
169
  target = _nodePath().default.resolve(process.cwd(), target);
89
170
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","names":["_nodeFs","data","_interopRequireDefault","require","_nodeModule","_nodePath","e","__esModule","default","resolveFrom","fromDirectory","moduleId","params","isJSON","endsWith","exts","extensions","Object","keys","Module","_extensions","skipNodePath","followSymlinks","resolved","path","resolve","fs","existsSync","ext","withExt","resolvedDir","moduleDirs","_nodeModulePaths","modulesDir","candidate","join","candidateWithExt","maybeResolve","nativeResolveFrom","fromFile","_resolveFilename","id","filename","paths","target","process","cwd","realpathSync"],"sources":["../src/resolve.ts"],"sourcesContent":["import fs from 'node:fs';\nimport Module from 'node:module';\nimport path from 'node:path';\n\ndeclare module 'node:module' {\n export function _nodeModulePaths(base: string): readonly string[];\n export function _resolveFilename(mod: string, parent?: Partial<Module>): string;\n export const _extensions: Record<string, unknown>;\n}\n\nexport interface ResolveFromParams {\n followSymlinks?: boolean;\n skipNodePath?: boolean;\n extensions?: readonly string[];\n}\n\nexport function resolveFrom(\n fromDirectory: string,\n moduleId: string,\n params?: ResolveFromParams\n): string | null {\n // We exclude extension resolution, if we're resolving a plain JSON file\n const isJSON = moduleId.endsWith('.json');\n const exts = !isJSON ? (params?.extensions ?? Object.keys(Module._extensions)) : [];\n\n const skipNodePath = !!params?.skipNodePath;\n const followSymlinks = params?.followSymlinks ?? skipNodePath;\n\n const resolved = path.resolve(fromDirectory, moduleId);\n // (1) check direct path / exact match\n if (fs.existsSync(resolved)) {\n return resolved;\n }\n\n // (2) check against direct path matches with extensions\n for (let ext of exts) {\n ext = ext[0] !== '.' ? `.${ext}` : ext;\n const withExt = resolved + ext;\n if (fs.existsSync(withExt)) {\n return withExt;\n }\n }\n\n // (3) if we're not following symlinks, we try to resolve against `node_modules` folders unresolved\n if (!followSymlinks || skipNodePath) {\n const resolvedDir = path.resolve(fromDirectory);\n const moduleDirs = Module._nodeModulePaths(resolvedDir);\n for (const modulesDir of moduleDirs) {\n const candidate = path.join(modulesDir, moduleId);\n // (3.1) direct match\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n // (3.2) check against match with extensions\n for (let ext of exts) {\n ext = ext[0] !== '.' ? `.${ext}` : ext;\n const candidateWithExt = candidate + ext;\n if (fs.existsSync(candidateWithExt)) {\n return followSymlinks ? maybeResolve(candidateWithExt) : candidateWithExt;\n }\n }\n }\n }\n\n // (4): Fallback to native Node resolution, if `skipNodePath` is disabled\n return !skipNodePath ? nativeResolveFrom(fromDirectory, moduleId) : null;\n}\n\nfunction nativeResolveFrom(fromDirectory: string, moduleId: string): string | null {\n try {\n const resolvedDir = maybeResolve(fromDirectory);\n const fromFile = path.join(resolvedDir, 'index.js');\n return Module._resolveFilename(moduleId, {\n id: fromFile,\n filename: fromFile,\n paths: [...Module._nodeModulePaths(resolvedDir)],\n });\n } catch {\n return null;\n }\n}\n\nfunction maybeResolve(target: string): string {\n target = path.resolve(process.cwd(), target);\n try {\n return fs.realpathSync(target);\n } catch {\n return target;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"resolve.js","names":["_nodeFs","data","_interopRequireDefault","require","_nodeModule","_nodePath","e","__esModule","default","resolveFrom","fromDirectory","moduleId","params","isJSON","endsWith","exts","extensions","Object","keys","Module","_extensions","skipNodePath","followSymlinks","resolved","path","resolve","resolveType","resolveTypeSync","ResolveType","FILE","ext","withExt","isFileSpecifier","test","isAbsolute","DIR","join","resolvedDir","moduleDirs","_nodeModulePaths","modulesDir","candidate","ENOENT","dirname","fs","existsSync","candidateWithExt","maybeResolve","nativeResolveFrom","fromFile","_resolveFilename","id","filename","paths","isRealpathFileSync","target","realpath","realpathSync","lstatSync","throwIfNoEntry","isFile","stat","isSymbolicLink","isDirectory","process","cwd"],"sources":["../src/resolve.ts"],"sourcesContent":["import fs from 'node:fs';\nimport Module from 'node:module';\nimport path from 'node:path';\n\ndeclare module 'node:module' {\n export function _nodeModulePaths(base: string): readonly string[];\n export function _resolveFilename(mod: string, parent?: Partial<Module>): string;\n export const _extensions: Record<string, unknown>;\n}\n\nexport interface ResolveFromParams {\n followSymlinks?: boolean;\n skipNodePath?: boolean;\n extensions?: readonly string[];\n}\n\nexport function resolveFrom(\n fromDirectory: string,\n moduleId: string,\n params?: ResolveFromParams\n): string | null {\n // We exclude extension resolution, if we're resolving a plain JSON file\n const isJSON = moduleId.endsWith('.json');\n const exts = !isJSON ? (params?.extensions ?? Object.keys(Module._extensions)) : [];\n\n const skipNodePath = !!params?.skipNodePath;\n const followSymlinks = params?.followSymlinks ?? skipNodePath;\n\n let resolved = path.resolve(fromDirectory, moduleId);\n\n // (1) check direct path / exact match\n const resolveType = resolveTypeSync(resolved);\n if (resolveType === ResolveType.FILE) {\n return resolved;\n }\n\n // (2) check against direct path matches with extensions\n for (let ext of exts) {\n ext = ext[0] !== '.' ? `.${ext}` : ext;\n const withExt = resolved + ext;\n if (resolveTypeSync(withExt) === ResolveType.FILE) {\n return withExt;\n }\n }\n\n const isFileSpecifier = /^\\.\\.?(?:$|[/\\\\])/.test(moduleId) || path.isAbsolute(moduleId);\n\n // (2.2) check against `/index` paths if we've disabled Node resolution or if we're resolving a relative path directly\n if ((isFileSpecifier || skipNodePath) && !isJSON && resolveType === ResolveType.DIR) {\n resolved = path.join(resolved, 'index');\n for (let ext of exts) {\n ext = ext[0] !== '.' ? `.${ext}` : ext;\n const withExt = resolved + ext;\n if (resolveTypeSync(withExt) === ResolveType.FILE) {\n // NOTE(@kitten): Like above, we don't resolve symlinks when we're not in a node_modules resolution path\n return withExt;\n }\n }\n }\n\n // We won't need to continue with Node resolution if we're only resolving paths\n if (isFileSpecifier) {\n return null;\n }\n\n // (3) if we're not following symlinks, we try to resolve against `node_modules` folders unresolved\n if (!followSymlinks || skipNodePath) {\n const resolvedDir = path.resolve(fromDirectory);\n const moduleDirs = Module._nodeModulePaths(resolvedDir);\n for (const modulesDir of moduleDirs) {\n let candidate = path.join(modulesDir, moduleId);\n const resolveType = resolveTypeSync(candidate);\n // (3.1) direct match\n if (resolveType === ResolveType.FILE) {\n return candidate;\n } else if (resolveType === ResolveType.ENOENT) {\n // Optimization: If the directory itself doesn't exist, there's no point in us continuing\n // to check for more files in this directory\n const dirname = path.dirname(candidate);\n if (dirname !== modulesDir && !fs.existsSync(dirname)) {\n continue;\n }\n }\n // (3.2) check against match with extensions\n for (let ext of exts) {\n ext = ext[0] !== '.' ? `.${ext}` : ext;\n const candidateWithExt = candidate + ext;\n if (resolveTypeSync(candidateWithExt) === ResolveType.FILE) {\n return followSymlinks ? maybeResolve(candidateWithExt) : candidateWithExt;\n }\n }\n // (3.3) check against `/index` paths\n if (!isJSON && resolveType === ResolveType.DIR) {\n candidate = path.join(candidate, 'index');\n for (let ext of exts) {\n ext = ext[0] !== '.' ? `.${ext}` : ext;\n const candidateWithExt = candidate + ext;\n if (resolveTypeSync(candidateWithExt) === ResolveType.FILE) {\n return followSymlinks ? maybeResolve(candidateWithExt) : candidateWithExt;\n }\n }\n }\n }\n }\n\n // (4): Fallback to native Node resolution, if `skipNodePath` is disabled\n return !skipNodePath ? nativeResolveFrom(fromDirectory, moduleId) : null;\n}\n\nfunction nativeResolveFrom(fromDirectory: string, moduleId: string): string | null {\n try {\n const resolvedDir = maybeResolve(fromDirectory);\n const fromFile = path.join(resolvedDir, 'index.js');\n return Module._resolveFilename(moduleId, {\n id: fromFile,\n filename: fromFile,\n paths: [...Module._nodeModulePaths(resolvedDir)],\n });\n } catch {\n return null;\n }\n}\n\nfunction isRealpathFileSync(target: string): boolean {\n try {\n const realpath = fs.realpathSync(target);\n return !!fs.lstatSync(realpath, { throwIfNoEntry: false })?.isFile();\n } catch {\n return false;\n }\n}\n\nconst enum ResolveType {\n FILE = 1,\n DIR = 2,\n ENOENT = 0,\n}\n\nfunction resolveTypeSync(target: string): ResolveType {\n try {\n const stat = fs.lstatSync(target, { throwIfNoEntry: false });\n if (stat) {\n if (stat.isSymbolicLink()) {\n return isRealpathFileSync(target) ? ResolveType.FILE : ResolveType.ENOENT;\n } else if (stat.isFile()) {\n return ResolveType.FILE;\n } else if (stat.isDirectory()) {\n // NOTE(@kitten): We don't support symlinked directories for resolution\n // Realistically, when we disable Node resolution, symlinked directory resolution\n // for `/index` is rare, and can be used to exploit symlinks\n return ResolveType.DIR;\n } else {\n return ResolveType.ENOENT;\n }\n } else {\n return ResolveType.ENOENT;\n }\n } catch {\n return ResolveType.ENOENT;\n }\n}\n\nfunction maybeResolve(target: string): string {\n target = path.resolve(process.cwd(), target);\n try {\n return fs.realpathSync(target);\n } catch {\n return target;\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/require-utils",
3
- "version": "56.1.1",
3
+ "version": "56.1.2",
4
4
  "description": "Reusable require and Node resolution utilities library for Expo",
5
5
  "license": "MIT",
6
6
  "main": "./build/index.js",
@@ -41,7 +41,7 @@
41
41
  "publishConfig": {
42
42
  "access": "public"
43
43
  },
44
- "gitHead": "f26be3dd9396bf7c399a1d607865d0fabdbc0d64",
44
+ "gitHead": "c4c9867a0bcbb188e55ecaec4998e38d33108a5d",
45
45
  "scripts": {
46
46
  "build": "tsc --emitDeclarationOnly && babel src --out-dir build --extensions \".ts\" --source-maps --ignore \"src/**/__mocks__/*\",\"src/**/__tests__/*\"",
47
47
  "clean": "expo-module clean",